原码很直观,就是给人看的
反码是最大值减去原码,只是用来过渡一下
补码才是计算机使用的,是计数系统容量(模)减去原码
假如原码是5,2进制为00000101
反码是11111111 - 00000101 = 11111010,其实也就是各位取反
补码,对于八位二进制数,首位是符号位,因此这个八位二进制树只能表示2^7,也就是10000000,这是计数系统的最大容量,也即是 模 所以补码 = 10000000 - 00000101 = 01111011.这是标准的理解,而我们实际上使用的时候,负数的补码从来都是去掉符号位然后取反+1来计算的,正数的补码就是原码。
5的原码:00000101
-6的原码:10000110
5的补码:00000101
-6的补码:11111010
5-6 = 00000101 + 11111010 = 11111111(负数求补码,正数不用管)
所以5-6 = 10000001 = -1
补码的好处就是不考虑正负号直接相加运算,非常适合计算机,省去了很多逻辑判断。