原因在于,使用补码,可以将符号位和数值域统一处理
这里我们举一个例子1+(-1)
1的原码:00000000000000000000000000000001
正整数的原码,补码,反码相同
-1的原码:10000000000000000000000000000001
反码: 11111111111111111111111111111110
补码: 11111111111111111111111111111111
如果我们把原码相加会发现结果为2或-2,与我们期待的结果不同,再试试反码发现由于是二进制,全部进位,变成33位,1开头其余全为零,而我们知道1bite=32字节,所以自然把1舍去,故而得到结果为零。这就是说为什么要用补码来存储
同时加法与减法也可以统一处理1-1可看做1+(-1)(CPU只能加法)