原码 | 反码 | 补码(机器码) | |
+1 | 0000 0001 | 0000 0001 | 0000 0001 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 |
+0 | 0000 0000 | 0000 0000 | 0000 0000 |
-0 | 1000 0000 | 1111 1111 | |
备注 | 第一位是符号位,正数为0,负数为1。 | 正数不变;负数符号位不变,其余取反。 | 正数不变;负数在反码的基础上再+1。 |
取值范围 | [-127,127] | [-127,127] | [-128,127] |
操作符 | 描述 | 运算规则 | 用途 |
& | 与 | 相对应位都为1时,结果为1 |
1.清零:清零指定位上的数 a &= ~(1<<bitIndex),清零整个数 a &=0 2.取一个数的指定位:判断指定位是否为1 a & (1<<bitIndex) !=0,取后四位 a &=(1<<4) -1 3.判断奇偶:(a & 1) == 0 |
| | 或 | 相对应位都为0时,结果为0 | 1.指定某些位设为1 :a |= (1<<bitIndex) |
^ | 异或 | 相对应位相同为0,相异为1(相异为真,非异为假) |
1.取反使指定位上的数:a ^= (1<<bitIndex) 2.交换两个数:设 a=0001,b=1010 a^=b -> a=1011,b=1010 b^=a -> a=1011,b=0001 a^=ab -> a=1010,b=0001 |
~ | 取反 | 0变1,1变0 | 1.清除指定位上的数:a &= ~(1<<bitIndex) |
<< | 左移 | 各二进制位全部左移,高位丢弃,低位补0 |
1.左移动一位表示*2: a = a<< 1 , 2ⁿ可以用 “1<<n” 表示; 2.生成特定位为1的数:1<<bitIndex |
>> | 右移 | 符号位不动,其他二进制位全部右移,负数高位补1,正数高位补0! | 右移动一位表示/2:a = a>> 1; |
>>> | 无符号(没有负数)右移 | 各二进制位全部右移,高位补0! |
/2 |