计算机底层知识-二进制

2020-11-25  本文已影响0人  麦大大吃不胖

by shihang.mai

10进制是逢10进1,2进制便是逢2进1

1. 二进制和十进制转换

1.1 正数

二进制的每一位=10进制的2^位的值。
例如
2进制: 0 0 1 0 0 1 0 0
10进制: 2^2 + 2^5 = 36

1.2 负数

最高位为1,用其余的数去表示实际的数

2进制: 1 1 0 1 1 1 0 0
10进制: 符号位不变,然后~(2进制) + 1 = -36

2. 源码、反码、补码

源码:0 0 1 0 0 1 0 0
反码:1 1 0 1 1 0 1 1(1->0 0->1)
补码:1 1 0 1 1 1 0 0(反码基础上+1)

2.1 负数用补码的好处

就是为了用一个代码逻辑去做运算,而不用if else那么多逻辑表示

3. 二进制的逻辑运算

运算符 描述 举例
&(与) 遇0则0 1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
|(或) 遇1则1 1 | 1 = 1
1 | 0=1
0 | 0 = 0
~(取反) 取反 ~ 1 = 0
~ 0 = 1
^(异或) 不进的2进制 1 ^ 1=0
1 ^ 0=1
0 ^ 0=0
>>(右移) 右移动,补符号位(原最高位是什么补什么),移多少位都补同一个数字 >>00100100将最右边的0向右移,符号位0=00010010
>>11011100将最右边的0向右移,符号位补1=11101110
<<(左移) 左移动,永远补0 <<00100100将最左边的0左移,末尾补0=01001000
>>>(无符号右移) 右移动,补符号位永远补0 >>>00100100将最右边的0向右移,符号位0=00010010

3.1 异或作用举例

首先需要知道异或性质

  1. 0 ^ N = N
  2. N ^ N = 0
  3. 异或与数字顺序无关

例如下面有这么一道题:
a=3 b=4 如何交换? 预期结果 a=4 b=3

a=a^b
b=a^b
a=a^b
a b交换.png

4. 计算机进制

上一篇下一篇

猜你喜欢

热点阅读