对于有符号的的而言:
- 二进制的最高位是符号位(0正1负)
- 正数的原码反码补码都一样
- 负数的反码 = 它的原码符号位不变,其他位取反
- 负数的补码 = 它的反码 +1, 负数的反码 = 负数的补码 -1
- 0的反码补码都是0
- Java 没有无符号位,换言之Java的数据都是有符号的
- 在计算机运算的时候都是以补码的方式来运算的
- 查看运算结果时要看原码
位运算符
- & 按位与 同1为1,否则为0
- | 按位或 有1为1,否则为0
- ^ 按位异或 不同为1,相同为0
- ~ 按位取反
- >> 算术右移 低位溢出,符号位不变,用符号位补溢出的高位
- << 算术左移 符号位不变,低位不变
- >>> 逻辑右移(无符号位右移) 低位溢出,高位补零