【2017年整理】负数补码的原理及证明

上传人:豆浆 文档编号:1013262 上传时间:2017-05-25 格式:DOC 页数:2 大小:22.50KB
返回 下载 相关 举报
【2017年整理】负数补码的原理及证明_第1页
第1页 / 共2页
【2017年整理】负数补码的原理及证明_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《【2017年整理】负数补码的原理及证明》由会员分享,可在线阅读,更多相关《【2017年整理】负数补码的原理及证明(2页珍藏版)》请在金锄头文库上搜索。

1、在本文里面,com 指代 complement, neg 指代 negative,并且本文涉及的是”2 的补码”(twos complement)而不是”1 的补码”(ones complement)学过计算机的大部分人都知道负数在计算机内部是用补码表示的,但是大部分的教材和文章里面都只是简单的告诉你负数的补码等于其反码加一云云,至于为什么是这样,则基本上都语焉不详。负数用补码表示的好处就是减法可以转化为加法,简化硬件设计,CPU只用一个加法器就可以进行加减法运算了。下面我就尝试着来证明一下,为什么负数的补码等于反码加一。理解下面的推导要求读者必须了解模数的概念和求模运算。假设我们的运算使用

2、n 位二进制数,那么这 n 位二进制数的模数为 2n,数 为一个用 n 位二进制表示的常数,数 x 为一个用 n 位二进制表示的变数,那么 2 n ,x 2 n是成立的,在这里 与 x 都是用原码表示的。现在我们从 减掉 x,推导如下: x = 2 n%2n + ( x) % 2 n= (2n + ( x) % 2 n= ( + 2 n x) % 2n= () % 2 n + (2n x) % 2n= + (2 n x)我们现在将 x 这个减法运算成功演化成了 + (2 n x)这个加法运算。从模数的概念我们知道,如果两个数相加等于其模数,那么这两个数是互补的。在这里 x 与 2n x 是互补

3、的,减掉数 x 与加上其补数 2n x 是相等的。在这里还隐藏了一层含义,一个正数加上一个负数,如果有进位产生,把进位简单的舍弃掉是不影响计算结果的。我们得出第一个结论:xcom = 2n x反码则简单的多,一个数的全部二进制位取反则得到其反码,由此可知,如果一个数加上它的反码,则此全部二进制位是满的,也就是全部是 1,其值为 2n-1 + 2n-2 + + 22 + 21 + 20 = 2n 1我们得出第二个结论xneg = 2n 1 x综合结论一和二,我们可以做如下推导:xcom = 2n x= 2n 1 x + 1= xneg + 1至此我们得出最终结论一个 n 位二进制数的补数等于其反码加一。我们再回头看看,我们曾经说“x 与 2n x 是互补的,减掉数 x 与加上其补数 2n x 是相等的”,减掉数 x,我们可以看做是加-x,也就是”加-x”与”加 2n x”是对等的,那么在计算机中-x 用 2n x做其补码就顺理成章了,注意这里说的是补码而不是补数。现在我们把 x 替换为 1,n 替换为 8,得出-1 的补码为 28-1=255=0xFF,这就是-1 在计算机里面的真实面目。当然对于正数就另当别论了。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号