补码和求补的区别以及计算机对减法的处理
1、补码和求补运算
补码:对于⼀个带符号的数来说,正数三码合⼀(原码、反码、补码都⼀样);负数的反码为其原码除符号位以外的各位按位取反,负数的补码是先取反然后加⼀,不要忘了负数的符号位为1。
求补运算与补码的区别在于,求补运算时不考虑是否有符号位,所有的位都要取反,最后加⼀,它求得的结果不是求这个数的补码,⽽是这个数相反数的补码。
以0-0xFF之间数的减法为例:
X-Y=X+(-Y)=X+(0x100-Y)-0x100
Y+Y(反)=0xFF
Y+Y(反)+1=0x100负75的补码怎么求
由以上三个式⼦可以推导出,neg(Y)=0x100-Y=Y(反)+1,即X-Y=X+NEG(Y)。
  2)neg是求补运算,求补运算是反数加1,这也就是我们上⾯说的求补运算时不考虑正负,对符号位也要
求反,⼀个数的求补就是0减去这个数,上述0x100在我们讨论的0-0xFF之间的数来说就是0。
  3)负数的求补和补码可以这样记:转换成⼆进制后,求补是从右向左到第⼀位为1,包括这位1在内的右边所有位数保持不变,左边的全部取反;负数补码是在求补的基础上除了保证那位1和他右边的所有位不变外,还要保证符号位也不变。
实际上处理减法我们可以采⽤两种⽅式⼀种是补码相加,⼀种就是求补的⽅式。例如:
12-8
12的三码合⼀都为 0000,1100
-8的原码:1000,1000
反码:1111,0111
补码:1111,1000
⾸先以补码相加的形式:
12      0000,1100
-  8    +1111,1000
——————————————
4      10000,0100
最⾼位越界丢弃。另⼀种⽅式是求补X-Y=X+NEG(Y),NEG(8)=1111,1000
12      0000,1100
-  8    +  1111,1000
——————————————
4      10000,0100
其实这两种⽅式都是⼀样的,因为NEG(X) = -X的补码。
注:以上为本⼈理解,如有错误欢迎⼤家指正,不胜感谢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。