负数的补码的一种证明方法 负数的二进制补码

负数的补码的一种证明方法

  

叶 嘉 黄珍生

(广西广播电视大学理工学院 广西南宁 5--30022)

  [摘要]本文首先介绍了负数补码和反码的定义,并用例子验证定义的正确性,然后从负数补码、反码的定义出发,给出了负数的补码等于该负数的反码与末位加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.

  [作者简介]叶嘉,女,广西广播电视大学理工学院讲师。黄珍生,男,广西民族学院计算机与信息科学学院讲师,信息管理与信息系统教研室主任。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/273966.html

更多阅读

让程序窗口化运行的一种简单方法 以窗口模式运行程序

让程序窗口化运行的一种简单方法——简介有些游戏、软件是全屏的,这里介绍让软件窗口化的一种简单方法。让程序窗口化运行的一种简单方法——方法/步骤让程序窗口化运行的一种简单方法 1、找到你要执行的文件,就是你运行时双击的那个

六维空间等IPV6资源上不去的一种解决方法 六维空间ipv6

发信站: 天大求实BBS (Sun Oct 17 17:12:45 2010), 本站(bbs.tju.edu.cn)前一段时间我也是出现这个问题,六维空间上不去,IPV6网站打开慢,IPV6网络电视看不了。开始以为是六维在线人数太多的原因,可偶然还原系统后发现又能上了,第二天又不

日常生活的自我呈现:对一种研究方法的研究

想来不必陌生,辩证唯物主义常说,“世界观决定方法论,方法论体现世界观,有什么样的世界观就有什么样的方法论,不存在脱离世界观的方法论,也不存在脱离方法论的世界观。”那么,这句话放在学术研究上似乎也同样有效,有什么样的学术观就有什么样

MOODLE平台的另一种安装方法 万里学院moodle平台

MOODLE平台的另一种安装方法最近在更改本科同学关于MOODLE平台的安装的实验报告的时候,发现他们大部分都是用easyphp安装的,他们在报告中体现出来一些的问题,如:日历产生乱码、安装不了中文版本、无法打开http://localhost/mysql/

声明:《负数的补码的一种证明方法 负数的二进制补码》为网友心房的律动分享!如侵犯到您的合法权益请联系我们删除