by shihang.mai
10进制是逢10进1,2进制便是逢2进1
1. 二进制和十进制转换
1.1 正数
二进制的每一位=10进制的的值。
例如
2进制: 0 0 1 0 0 1 0 0
10进制: + = 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 异或作用举例
首先需要知道异或性质
- 0 ^ N = N
- N ^ N = 0
- 异或与数字顺序无关
例如下面有这么一道题:
a=3 b=4 如何交换? 预期结果 a=4 b=3
a=a^b
b=a^b
a=a^b
a b交换.png
4. 计算机进制
- 1bit =1位
- 8bit = 1Byte
- 1KB =1024Byte
- 1MB =1024KB
- 1GB =1024MB
网友评论