我们都晓得,貌似是去年的这个时候好像学c的时候就说了,代码中的计算机语言是以2进制的形式来计算的,举个例子:
5 的原码 0000 0101,即八位的二级制数。在这里强调一点,就是正数没有所谓的补码反码,呃,不应该这么说,应该说的是,补码和原码还有反码对于正数来讲没有意义,都一样。
现在来聊一聊负数
负数的原码 最高位为符号位比如 -5:1000 0101
负数的反码 :除最高位不变 其他位变反 1->0 0->1(最高位这么说可能有些不清楚,其实就是符号位)
负数的补码 : 负数的反码+1
这里举个例子
比如:1= [00000001]原 = [00000001]反 = [00000001]补,,-1 = [10000001]原 = [11111110]反 = [11111111]补。
1+(-1)=[0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原=0;可见答案是正确的。
在计算机中 。负数是按补码存储的。所以说,java也是按照补码来保存数据的