计算机运算基础二数的补码表示法
文章作者 100test 发表时间 2007:03:10 17:50:51
来源 100Test.Com百考试题网
二、 数的补码表示法
数的正负号用 0和1表示,使正负号和数值全部数字化了。既然如此,能否将正负号和数值放在一起进行运算,而不因正负号的不同分别处理呢?为此,提出计算机数的补码表示法。数据的这种表示形式大大地简化了运算的处理过程。
那么什么是补码呢?我们先看一个例子,假定现在时钟上的读数是 10点钟,问4小时之前是几点钟?即时钟上的读数是什么。答案是显而易见的,为:10 - 4 = 10 (- 4)= 6(点)。但是,这完全可以换一种算法得到同样的结果:10 8 = 18(点)。显然,18(点)在时钟刻度盘上的读数是6(点)。常识告诉我们,时钟最大只能表示到12,超过12时就把12丢掉,再从0开始,即到达12时又复位为0 。上式中的8是 12 - 4的结果;也即4是相对于12 的"补数"。因此,上式可表示为取模运算: 10 - 4 = (10 8 )Mod (12) = 6 。
( 1)数的原码表示:原码是最简单的计算机数表示法。
对正数,符号位 = 0 ,数值位 = 数的绝对值。 0100101 的原码为:00100101
对负数,符号位 = 1 ,数值位 = 数的绝对值。
- 0100101 的原码为:10100101
- 10100101=10000000( 2 7 ) - (- 0100101) = 100000000 0100101 = 10100101
原码的生成公式为:
![](/ncre/Files/2007-2/14/143168365.jpg)
( 2)数的反码表示:
对正数:同原码表示 。如, 0100101 表示为00100101。
对负数,先将其表示为绝对值(正数)的原码,然后将每一位的数变反,即 0变为1,1变为0 。如,- 0100101 的反码是:先表示为00100101 ,取反后为11011010。这个结果恰相当于计算11111111 ( 2 8 - 1 ) (- 00100101) = 11111111 - 00100101 = 11011010。
反码的生成公式为:
![](/ncre/Files/2007-2/14/1431147060.jpg)
( 3)数的补码表示
对正数,同原码表示 。如, 0100101 表示为00100101。对负数,先将其表示为反码,然后在该反码的最低位加“1”,即得到它的补码 。
如, - 0100101 先将其表示为反码为11011010 ,再在最低位加“1”得补码为11011011。这个结果恰相当于计算
100000000( 2 8 ) (-00100101) = 11011011
补码的生成公式为:
![](/ncre/Files/2007-2/14/1431154901.jpg)