Java位运算中原码、反码、补码
1. 原码、反码、补码
- 二进制的最高位是符号位:0表示正数,1表示负数(0->0 1->-)
- 正数的原码、反码、补码都是一样(三码合一)
- 负数的反码 = 它的原码符号位不变,其它位取反(0->1,1->0)
- 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1
- 0的反码、补码都是0
- java没有无符号数,换言之,java中的数都是有符号的
- 在计算机运算的时候,都是以补码来运算的(计算机可以通过补码解决正数和负数)
- 当我们看运算结果的时候,要看它的原码
2. 七个运算(&、|、^、~、>>、<<、>>>)
- 按位与&:两位全为1,结果为1,否则为0
- 按位或|:两位有一个为1,结果为1,否则为0
- 按位异或^:两位一个为0,一个为1,结果为1,否则为0
- 按位取反~:0->1,1->0