1用途
补码的出现是为了解决计算机硬件无法直接做减法的问题,通过原码转化成补码就可以把减法运算转化为加法运算来做了。
2本质
补码运算的本质是类似于取模运算
比如做十进制的个位数运算
(结果也应该是个位,超出则是溢出。运算数0~10)
那么
2 + 1 = 3
2 + 3 = 5
当做减法的时候,取下一位数的最小值
2 - 1 + 10 = 11
然后结果只取个位数2 - 1 = 1
同样的
结果取个位,5 - 3 = 2
红框的部分其实就相当于二进制运算当中的取反再加一。
它就是加(10 - x),然后对10取模
结果是负数的情况
你要知道,这是作个位运算,结果大于9都是溢出的
所以
我们加10后
6小于10,所以
当结果小于10时,我们需要给结果再取一次(10 - x)
红框的部分相当于2进制运算中的取反再加一
3二进制减法运算例子
用前面的5 - 3和3 - 7
结果时整数,只用取一次补码
结果是负数,取两次补码(运算一次,结果一次)
4其他
8位有符号数的表示范围是-128 ~127(负数补码表示)
正数有0~127 (128个)
负数有-128~-1(128个)
1000000表示 -128
对7位运算来说,128是它下一位的最小值
类似于前面的个位数运算
7-0 = 7+10 - 0 = 17
7 - 10 = 7 + 10 - 10 = 7
-(10 - 7 ) = -3