出自韩顺平老师的B站的Java教学视频P100
-
二进制的最高位是符号位:0表示正数,1表示负数
-
正数的原码,反码,补码都一样(三码合一)
-
负数的反码 = 它的原码符号位不变,其他位取反
-
负数的补码 = 它的反码+1, 负数的反码 = 负数的补码 - 1
-
0的反码, 补码都是0
-
java没有无符号数,换言之,java中的数都是有符号的
-
在计算机运算的时候,都是以补码的方式来运算的
-
当我们看运算的结果时,看它的原码(重点)。
-
为什么要使用原码,反码和补码了呢 ?
该问题的答案 -
讲到这里,就一定要提醒一下位运算符
按位与&:
按位或|:
按位异或^:
按位取反~:
我们在这里举列出 ~2的计算过程
2 = [0000 0010] //原码
[0000 0010] //反码
[0000 0010] //补码
[1111 1101] //运算后的补码
[1111 1100] //运算后的反码
[1000 0011] //运算后的原码
因此最后输出结果是-3,我们可以通过一下代码验证一下结果
public class BitOperator{
public static void main(String[] args){
System.out.println(~2); //-3
}
}