从溢出视角看补码

        正数的补码、原码和反码相同;

        负数的反码符号位为" $1$ ",真值取反;其补码即反码加一。

        CPU并没有减法运算器,而计算机对减法的处理需要则用到补码,从而实现将二进制数的减法转化为加法运算,以达到电路设计的目的。

        计算机对二进制数的加法运算有溢出的特点,那么可以考虑将减法通过加法溢出达到相同的效果。

        举个例子,8 bit 二进制数 的计算在取值达到 $256$ 时溢出,那么考虑算式:$15-7=8$,即算式: $15+(-7)=8$ 。

        任意两数的加减运算等价于对应补码的二进制加减运算(最高位不进位)

        $7$ 的原码变为 $-7$ 的反码,即 $00000111$ 变为 $11111000$ ,相当于 $11111111$ 减去 $00000111$ ,也就是 $255+(-7)$ ,$11111000$ 再变为 $-7$ 的补码,也就是 $11111001$ ,相当于 $256+(-7)$ 这时,再用 $11111001$ 加上 $15$ 的补码($00001111$),从而说明了 $15$ 的补码与 $7$ 的补码相加,在数值上等价于 $256+(-7)+15$ 而 $256$ 恰好溢出,相当于结果对 2^{8} 取模,也就是 $15+(-7)=8$ 。

        由上述过程,说明了补码相加即利用了计算机二进制数的溢出实现减法过程。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值