负数38的补码的补码的一种证明方法 叶 嘉 黄珍生 (广西广播电视大学理工学院 广西南宁 530022) [摘要]本文首先介绍了负数38的补码补码和反码的定义并用例子验证定義的正确性,然后从负数38的补码补码、反码的定义出发给出了负数38的补码的补码等于该负数38的补码的反码与末位加1之和这一命题的一种證明方法与验证。 [关键词]补码;反码;证明 任意一个二进制数真值在计算机中用机器数来表示最基本的机器数有三种,即原码、补碼和反码[1]在计算机的运算过程中,根据不同的运算运用不同的机器数可以简化计算机运算过程并很快得到运算结果。如乘法和除法用原码参与运算比较方便符号位通过异或运算即得结果的符号位;而加法与减法运算用补码参与运算比较方便,它使符号位不用单独处理可以一起参与运算。在计算机中三种机器数能方便、容易地进行转换,这给使用带来极大方便其转换要点有三: (1)将一个数嘚二进制真值的最高位置上符号位(正数用0,负数38的补码用1表示)就是这个数的原码。 (2)对于一个正数其原码、补码、反码在計算机中的表示代码相同,其代码不用改变 (3)对于一个负数38的补码,将原码的符号位(即二进制数的最高位也即原码最左边的那一位)保持不变,数值位逐位取反(变为反码)末位(即最右边的那一位)加1,即得补码也就是说,一个负数38的补码的补码等于该負数38的补码的反码与末位加1之和[1] 本文要讨论的问题即第三个要点。这一要点在许多计算机原理的教材中使用但很少见到这一命题嘚完整推导或证明过程,这给学生在学习本章节内容时只能被动地接受命题不了解例题的理论依据。因此教师在教学中适当地从理论嘚高度论述原码、补码和反码之间的转换关系很有必要。本文从补码、反码的定义出发给出这一命题的简单证明,与同行分享与讨论 一、对于定点负整数 (一)、补码的定义[2]如下: [X]补=2n+XMOD(2n)(1) 从定义知,一个n位二进制定点负整数求其补码时,用2n为模数加上該负数38的补码即可 例如:已知n=8,X=-1010101则 [X]补=2n+X=28+(-1010101) =-1010101 (说明:28的二进制为,简记:28的二进制为1个1后有8个0) (二)、反码的定義[2]如下: [X]反=(2n-1)+X[MOD(2n-1)]……(2) 从定义知一个n位定点负整数,求其反码时用2n-1为模数加上该负数38的补码即可。 例如:已知n=8,X=-1010101则 [X]反=(2n-1)+X=(28-1)+(-1010101) 1010101 有了以上定点负整数补码,反码的定义我们就很容易地证明,对于任一定点负整数其补码等于其反码末位加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) (说明:2-7的二进制为0.0000001,简记为:2-7嘚二进制为小数点后第7位为1其余位为0。(小数点后第7位即为8位二进制负小数的最末最右的一位)[3] 同理有了以上定点负小数补码,反碼的定义我们也能很容易地证明,对于任一定点负小数[4]其补码等于其反码末位加1。 由(4)式[X]反=2-2-(n-1)+X,得: X=[X]反-
为什么负数38的补码补码的最高位肯定是1
为什么负数38的补码补码的最高位肯定是1?
问问他为什么要用最高位1表示负数38的补码而不是用0
------解决方案--------------------那你明白什么是负数38的补碼补码了吗?明白了自然就明白为什么首位肯定是1了
而且如果不是,怎么区分它和与它相对应的那个正数
------解决方案--------------------因为正数的最高位肯定是0,加反加1如果不进位那就是1,如果进位最高位也是1除非溢出
补码最高位是符号位,用0表示正数1表示负数38的补码
你这样相当于在问,为什么男人的身份证号码最后一位是奇数女人身份证号最后一位是偶数(15位身份证号)
——首先这是一种简单的计算方法,并非补码嘚定义
——第二,这种计算方法只是为我们指出了除最高位(可以理解为符号位)之外的位的计算方法并不是说符号位也参加这个运算。你可以这样记忆:在补码中负数38的补码的最高位是1,其它的位按你所说的方法计算
------解决方案--------------------看看这篇文章,帮助丰富一下知识編码是一种人为的、目的性很强的规范,了解规范的历史就能帮助你解释那些为什么千万不要钻牛角尖哦 ;)
注意:此处的 '== '是相等的意思。 '= '是赋值的意思
正数的最高位是符号位0,负数38的补码的最高位是符号位1
对于正数:反码==补码==原码。
对于负数38的补码:反码==除符号位以外嘚各位取反
补码==反码+1.
原码==补码-1后的反码==补码的反码+1。(读完本文后应该能够直观地认识到本式的正确性)
可以轻易發现如下规律:
通过此法,可以把减法运算转换为加法运算
所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算規则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.
还记得初中数学里的“补角”的概念吧。
两数之和等于100时这两个数叫做互为“补数”,100称做“和数”。
可以肯定:A-B=A+B的补数-和数
把这个方法引入机器世界:
设int是8位整数(最高位是符号位),和数H是9位:1 .
显然a+a嘚补码==H,H溢出那个最高位之后就剩下了int值0.
②.机器将a-b化个装后喂给加法器:(a的补码)+(-b的补码),它等于c.