JAVA位运算
JAVA位运算
JAVA位运算
原码 | 反码 | 补码(机器码) | |
+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 | |
| | 或 | 相对应位都为0时,结果为0 | |
^ | 异或 | 相对应位相同为0,相异为1(相异为真,非异为假) | |
~ | 取反 | 0变1,1变0 | |
<< | 左移 | 各二进制位全部左移,高位丢弃,低位补0 | |
>> | 右移 | 符号位不动,其他二进制位全部右移,负数高位补1,正数高位补0! | |
>>> | 符号位右移 | 各二进制位全部右移,高位补0! |