补码原理理解

补码原理理解

今天上课灵机一动想到了补码的原理

什么是补码

补码是由原码变换而来,原码就是带符号的二进制数。正数的补码与原码一样,负数的补码是由原码取反(除了符号位)后加一得到的。

举个例子:

正数 1 的原码为:0000 0001
对应的补码为:0000 0001

负数 -1 的原码为:1000 0001
对应的补码为:1111 1111

补码的用处

补码自然是有用的,计算机中的加法运算依靠加法器完成,如果要进行减法,重新设计一个减法器并不理智。而补码的关键作用在于将减法变成了加法。

对于 2 - 1来说,转换成二进制便是0000 0010 - 1000 0001,那么运用补码就会变成0000 00010 + 1111 1111。意思就是,A - B,等于A + (-B)的补码。

0000 0010 - 1000 0001 = 0000 0001(原码的符号位不参与运算)
0000 0010 + 1111 1111 = 0000 0001(计算过程中的进位溢出舍去,补码的符号位也参与运算)

补码的原理

补码的原理很简单,对于一个二进制减法0000 0002 - 0000 0001 = 0000 0002 + (1 0000 0000 - 1) = 0000 0002 + 1111 1111这里将 -1 变成了1 0000 0000 - 1,因为0000 0002只有八位,加上一个9位的数会溢出,并没有影响。所以等价于加上负数的补码。

所以对于一个N位的负数B来说,补码的获取方式实际上是用2^N - B的绝对值。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值