原码、反码、补码

198 阅读1分钟

总结: 1.二进制的最高位为符号位,0正1负。 2.正数的原码、反码、补码都一样(三码合一)。 3.负数的反码=它原码的符号位不变,其他位取反 4.负数的补码=它的反码+1,负数的反码=它的补码-1 5.0的反码、补码都是0。 6.java中的数都是有符号的。 7.在计算机运算的时候,都是以补码的方式来运算的。 8.当我们看运算结果的时候,要看他的原码。

补码是为了消除+0和-0导致的0不唯一,在补码中把负数范围[-127~-0]向后移动一位,变成[-128~-1],正数范围依然是[+0~127],具体做法是反码+1,11111111就不再表示-0而是-1,10000000就表示-128。具体解释文章:zhuanlan.zhihu.com/p/105917577

反码 -0,-1,-2,~~~,-126,-127

{11111111},{11111110},{11111101},~~~,{10000001},{10000000}

反码+1后在补码中为-128,-1,-2,~~~,-126,-127

{10000000},{11111111},{11111110},~~~,{10000010},{10000001}