补码的代数解释

任何一个数都可以表示为:

-a=2­­(n-1)-2(n-1)-a

假设a为正数,那么-a就是负数。而根据二进制转十进制数的方法,我们可以把a表示为:(第(n-1)位为符号位不计算在内)

a=k0*20+k1*21+k2*22+……+k(n-2)*2(n-2)

这里k0、k1、k2……k(n-2)是1或者0,而且这里设a的二进制位数为n位,即其模为2(n-1),而2(n-1)其二项展开式是:

1+20+21+22+……+2(n-2)

在式子:-a=2(n-1)-2(n-1)-a中,2(n-1)-a代入

a=k0*20+k1*21+k2*22+……+k(n-2)*2(n-2)

2(n-1)=1+20+21+22+……+2(n-2)

两式,

2(n-1)-a=(1-k(n-2))*2(n-2)+(1-k(n-3))*2(n-3)+……+(1-k2)*22+(1-k1)*21+(1-k0)*20+1

而这步转化正是取反再加1的规则的代数原理所在。因为这里k0、k1、k2、k3……不是0就是1,所以1-k0、1-k1、1-k2的运算就是二进制下的取反,而为什么要加1,追溯起来就是2(n-1)的二项展开式最后还有一项1的缘故。而-a=2­­(n-1)-2(n-1)-a中,还有-2(n-1)这项未解释,这项就是补码里首位的1,首位1在转化为十进制时要乘上-2(n-1),这正是n位二进制的模。

 

注:n位二进制,最高位为符号位,因此表示的数值范围-2 (n-1)~2(n-1)-1,所以模为2(n-1)。上面提到的8位二进制模为28是因为最高位非符号位,表示的数值范围为0~28-1。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值