使用二进制补码表示二进制负数方法合理性的证明

使用二进制补码表示二进制负数方法合理性的证明


目录


二进制补码的定义

对k位的二进制数M的十进制值,我们可以表示为1


M=ak12k1+ak22k2+...+a121+a020 M = a k − 1 2 k − 1 + a k − 2 2 k − 2 + . . . + a 1 2 1 + a 0 2 0

其中
ai=01 a i = 0 或 1

或采取更为紧凑的形式
M=i=0k1ai2i M = ∑ i = 0 k − 1 a i 2 i

则我们把 补码定义为
M=2kM M 补 = 2 k − M

而原来的M称为 原码


补码与反码的关系

定义二进制数M的反码

M=i=0k1Ai2i M 反 = ∑ i = 0 k − 1 A i 2 i

其中 2

Ai={0,1,ai=1ai=0 A i = { 0 , a i = 1 1 , a i = 0

事实上,反码即为原码所有位数上 0 变成 1 ,1 变成 0 。
这里有一个显然的性质:原码加反码得数所有k个数位上全是1;若此时往原码加反码的得数上加 1 ,则刚好进到 2k 2 k 上。于是我们得到公式
M+M+1=2k M + M 反 + 1 = 2 k

自然得到一下定理:

定理 1

补码等于反码加一
证:因为

M+M=2k M + M 补 = 2 k

M+M+1=2k M + M 反 + 1 = 2 k

显然
M=M+1 M 补 = M 反 + 1


计算机中二进制负数

现在讨论计算机中二进制负数的储存。我们给出以下定理

定理2

在k位储存系统中,可以用负数绝对值的补码代替负数,使其在满足k位储存系统中的加法规律。
证:利用定理一
设我们需要储存正数M的负值:- M

M+M+1=2k M + M 反 + 1 = 2 k

然而第 2k 2 k 位(即第 k+1 位)不能被储存,剩下
M+M+1=0 M + M 反 + 1 = 0

所以
M=M+1 − M = M 反 + 1

因此 M+1 M 反 + 1 即为M的加法逆(负数)


于是计算机中在小于 2k 2 k 位的内存内(所谓的不“溢出”)我们可以用负数绝对值的补码代替负数。

注释


  1. 为了方便表述和理解,我们在整篇文章中都将采用值相同十进制数来表示二进制数,如M写成二进制即为:
    ak1ak2...a1a0 a k − 1 a k − 2 . . . a 1 a 0

    k=44a3=0a2=1a1=1a0=1 k = 4 ( 4 位 ) , a 3 = 0 , a 2 = 1 , a 1 = 1 , a 0 = 1

    二进制数即为0111
  2. 比如0111的反码为1000
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值