织梦全套教程:负数的补码的一种证明方法

来源:百度文库 编辑:中财网 时间:2024/05/09 01:40:01
负数的补码的一种证明方法  叶 嘉   黄珍生(广西广播电视大学理工学院 广西南宁 530022)   [摘要]本文首先介绍了负数补码和反码的定义,并用例子验证定义的正确性,然后从负数补码、反码的定义出发,给出了负数的补码等于该负数的反码与末位加1之和这一命题的一种证明方法与验证。  [关键词]补码;反码;证明  [中图分类号]TP311.1 [文献标识码]A [文章编号]1008-7656(2005)03-0065-02 任意一个二进制数真值在计算机中用机器数来表示,最基本的机器数有三种,即原码、补码和反码。[1]在计算机的运算过程中,根据不同的运算运用不同的机器数,可以简化计算机运算过程并很快得到运算结果。如乘法和除法用原码参与运算比较方便,符号位通过异或运算即得结果的符号位;而加法与减法运算用补码参与运算比较方便,它使符号位不用单独处理,可以一起参与运算。在计算机中,三种机器数能方便、容易地进行转换,这给使用带来极大方便。其转换要点有三:  (1)将一个数的二进制真值的最高位置上符号位(正数用0,负数用1表示),就是这个数的原码。  (2)对于一个正数,其原码、补码、反码在计算机中的表示代码相同,其代码不用改变。  (3)对于一个负数,将原码的符号位(即二进制数的最高位,也即原码最左边的那一位)保持不变,数值位逐位取反(变为反码),末位(即最右边的那一位)加1,即得补码。也就是说,一个负数的补码等于该负数的反码与末位加1之和。[1]  本文要讨论的问题即第三个要点。这一要点在许多计算机原理的教材中使用,但很少见到这一命题的完整推导或证明过程,这给学生在学习本章节内容时只能被动地接受命题,不了解例题的理论依据。因此,教师在教学中适当地从理论的高度论述原码、补码和反码之间的转换关系很有必要。本文从补码、反码的定义出发,给出这一命题的简单证明,与同行分享与讨论。  一、对于定点负整数  (一)、补码的定义[2]如下:  [X]补=2n+XMOD(2n)(1)  从定义知,一个n位二进制定点负整数,求其补码时,用2n为模数加上该负数即可。  例如:已知n=8,X=-1010101,则  [X]补=2n+X=28+(-1010101)=100000000-1010101=10101011  (说明:28的二进制为100000000,简记:28的二进制为1个1后有8个0)  (二)、反码的定义[2]如下:  [X]反=(2n-1)+X[MOD(2n-1)]……(2)  从定义知,一个n位定点负整数,求其反码时,用2n-1为模数加上该负数即可。  例如:已知n=8,X=-1010101,则  [X]反=(2n-1)+X=(28-1)+(-1010101)  =11111111-1010101=10101010。  有了以上定点负整数补码,反码的定义,我们就很容易地证明,对于任一定点负整数,其补码等于其反码末位加1。  由(2)式,[X]反=(2n-1)+X,得:  X=[X]反-2n+1  将其代入(1)式,有  [X]补=2n+X  =2n+[X]反-2n+1  =[X]反+1(A)  根据以上推导,命题对于定点负整数是成立的。  二、对于定点负小数  (一)、补码的定义[2]如下:  [X]补=2+XMOD(2)(3)  从定义知,一个n位二进制定点负小数,求其补码时,用2为模数加上该负数即可。  例如:已知n=8,X=-0.1010101,则  [X]补=2+X=2+(-0.1010101)=10-0.1010101=10.0000000-0.10101011=1.0101011  (说明:2的二进制为10,写成小数即10.000000[3])  (二)、反码的定义[2]如下:  [X]反=2-2-(n-1)+X[MOD(2-2-(n-1)](4)  从定义知,一个n位定点负小数,求其反码时,用2-2-(n-1))为模数加上该负数即可。  例如:已知n=8,X=-0.1010101,则  [X]反=2-2-(n-1)+X=2-2-7+(-0.1010101)=10-0.0000001-0.1010101=1.1111111-0.1010101=1.0101010。  (说明:2-7的二进制为0.0000001,简记为:2-7的二进制为小数点后第7位为1,其余位为0。(小数点后第7位即为8位二进制负小数的最末最右的一位)[3]  同理,有了以上定点负小数补码,反码的定义,我们也能很容易地证明,对于任一定点负小数[4],其补码等于其反码末位加1。  由(4)式,[X]反=2-2-(n-1)+X,得:  X=[X]反-2+2-(n-1)  将其代入(3)式,有  [X]补=2+X  =2+[X]反-2+2-(n-1)  =[X]反+2-(n-1)(B)  上式中,2-(n-1)的二进制即为小数点后第n-1位为1,其余位为0,小数点后第n-1位为1,即n位定点小数最右最末的一位为1[4]。因此上式:[X]补=[X]反+2-(n-1),也就是X的补码等于其反码与末位加1之和)  根据以上推导,命题对于定点负小数同样是成立的。综合(A)式和(B)式,可得我们要推导证明的命题成立。    [参考文献]  [1]俸远祯.计算机组成原理与汇编语言程序设计[M].北京:中央广播电视大学出版社,2001:3.  [2]李明慧.计算机组成原理[M].北京:中央广播电视大学出版社,1997:10.  [3]白中英,韩兆轩.计算机组成原理教程[M].北京:科学出版社,1988.  [4]侯炳辉.计算机原理[M].北京:经济科学出版社,2000.  [作者简介]叶嘉,女,广西广播电视大学理工学院讲师。黄珍生,男,广西民族学院计算机与信息科学学院讲师,信息管理与信息系统教研室主任。