计算机反码和补码(反码运算和补码运算规则)
导语:反码与补码——计算机设计中应用非常广泛的数论
引言任何研究工作,包括教科书内容的选择都与历史和现实有关系。补码和反码在一般的数论书中并不涉及。但是在研究如何让所设计的计算机成本更节省速度更快的人看来,这种反码与补码理论比数论书中其他大量内容都重要,因为这是设计现代计算机所需要的基本数论理论。
反码十进制(123)10的反码是:(876)10
(123)10+(876)10=(999)10没一次进位,结果都是999,一般地一个N进制数(dkdk-1…..d1)N的反码,就是(ekek-1…..e1)。
对i=1,…,k来说有: ei=N-1-di
从十进制的角度看,下面的数对互为反码:
0,9
1,8
2,7
3,6
4,5
例1.求2进制(100101)2反码
解:1变0,0变1就得到反码:(11010) 2
补码反码加1就是补码。一般地:如果(dkdk-1…..d1)N与(ekek-1…..e1)N互为反码,那么(dkdk-1…..d1)N+(ekek-1…..e1)N+(1)N =(100….0)N
结果是k个0前面一个1,进位共计有k次。
例:求2进制(100101)2的补码
解:反码加1为补码
(11010) 2+(1)2=(11011)2
我们实际碰到的加法中两个数位长度未必相同,例如123+23是3位数加2位数,为了说明的方便,我们可以这样写位值表达式(123)N+(023) N
(023) N=(23) N前面补了零,让加数和被加数对齐成为位数相同的数。
(023) N的反码等于((923) N
规律:做减法时可先将被减数转换成补码,减数加上这个补码得到的结果再舍去最高进位的1,就可以获得实际的差。
例3.325-128=197
128的补码是:871+1=872
325+872=1197舍去最高进位就有减的结果是197。
证明很容易:
这个结论告诉我们,在设计实际的加减法运算器的时候,只需要设计一个加法器就可以了,减法可以用求反加1的补码转换为加法来做,现实中这样设计出的计算机运算部件可以比单独设计一个加法器和一个减法器件要减少一半的电路!
本文内容由小彤整理编辑!