补码的表示

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

补码表示

由于原码表示中0的表示形式的不唯一和原码加减运算的不方便,造成实现原码加减运算的硬件比较复杂.为了简化运算让符号位也作为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替实现,人们提出了补码表示方法.

1 . 模的概念

补码表示的引入是基于模的概念. 所谓"模"是指一个计数器的容量,比如钟表以12为一个计数循环,既可以看做以12为模.在进行钟表对时时,设当前钟表的时针停在9 点钟位置,要将时针拔到4点钟.可以采用两种方法: 一是反时针方向拔动指针,使时针后退5个小时,即 9 - 5 = 4 ; 另一种是顺时针方向拔动指针,使时针前进7个小时,也能够使时针指向4. 这是因为表钟的时间只有 1,2,.....,12 这12个刻度,时针指向超过12时,将又指向1,2,........,相当于每超过12,就把12丢

掉. 由于9+7=16,超过了12,因此把12减掉后得到4, 即用9+7 也同样能够将表钟对准到4点钟. 这样,

对于采用12为模的钟表而言, 9-5 ≡ 9+7 ( mod 12 ) ,称为在模12的条件下,9-5等于9+7. 这里, 7 称为-5 对12的补数, 既 7 = [-5]补= 12 + (-5) (mod 12) . 这个列子说明,对某一个确定的模而言,当需要减去一个数X时,可以用加上X 对应的负数-X 的补数[-X] 补来代替.

对于任意X,在模M的条件下的补数[X]补,可由下式给出:

[X]补= M + X (mod M)

根据公式:

1.当X>=0 时, M+X大于M,把M丢掉,得[X]补=X,既正数的补数等于其本身.

2.当X<0 时,[X]补=M+X=M-|X|,既负数的补数等于模与该数绝对值之差.

例: 求模M=2时,二进制数X的补数

(1)X=+0.10110101 (2)X=-0.10110101

解: (1)因为X>=0,把模2丢掉,所以[X]补= 2+X = 0.10110101 (mod 2)

(2)因为X<0 ,所以[X]补=2+X

=2-|X|

=10.00000000-.010110101

= 1.01001011(mod 2)

2. 补码的定义

在计算机中,由于硬件的运算部件与寄存器都有一定的字长限制,既计算机硬件能够一次处理的二进制数据的长度是有限的,因此计算机中

的运算也是有模运算.例如一个位数为8的二进制计数器,计数范围为00000000-11111111,当计数满到11111111时,再加1,计数值将达到100000000,产生溢出,最高位的1被丢掉,使得计数器又从00000000开始计数.对于这个8位二进制计数器而言,产生溢出的量100000000就是计数器的模,相当于前述钟表中的12.

由于计算机中的数据均采用二进制编码表示,因此通常将某数对模的补数称为补码.对于数值部分的位数为N的二进制数据X,下列式字给出了X为纯小数±0.x1x2...xn和X为纯整数±X1X2....XN时的补码的表示定义.

纯小数补码的定义:

X 0 ≤ X < 1

[X]补= (mod 2)

2+X -1≤ X < 0

纯整数补码的定义:

X 0 ≤ X

<2^N

[X]补= (mod

2^(n+1))

2^(N+1)+X -2^N ≤ X <0

根据式子可以知道:

X的补码[X]补是一个N+1位的机器数X0X1X2.....XN,其中X0是符号位,X1X2....XN为数部分,N为X数值

位的长度,并且纯小数补码表示的模M=2;纯整数补码表示的模

M=2^(N+1).例: 已知X,求X的补码[X]补.

1. X=+0.1010110

2. X=-0.1010110

3. X=+1010110

4. X=-1010 110

解:通过定义可以知道:

1.[X]补= X =0.1010110

2.[X]补= 2+X = 10.0000000+(-0.1010110) = 1.0101010

3.[X]补= X =1010110

4.[X]补= 2^7+X = 10000000+(-1010110) = 10101010 //更正为[X]补= 2^8+X = 100000000+(-1010110) = 10101010

可得:X0是符号位,X>=0,X0=0;X<0,X0=1.

3. 特殊数的补码表示

(1)真值0的补码表示

真值0的补码表示是唯一的:

[+0]补= [-0]补= 2±0.00....0 = 0.00...00 (纯小数)

[+0]补= [-0]补= 2^(N+1)±0.00....0 = 0.00...00 (纯整数)

(2) -1 和-2^N 的补码表示

在纯小数补码表示中,[-1]补= 2 + (-1) = 10.00....0 + (-1.00...0) =

1.00 0

在纯小数的原码表示中,[-1]原是不能表示的; 而在补码表示中,纯小数的补码最小可以表示到-1,这时

在[-1]补中,符号位的1既表示符号"-",又表示数值1.

在纯整数表示中有:

[-2^N]补= 2^(N+1) + (-2^N) = 1000...0(N+1个0) + (-100..0)(N个0) = 100..0(N个0)

同样,在纯整数的原码表示中,[-2^N]原是不能表示的;而在补码表示中,在模为2^(N+1)的条件下.纯整数的补码

最小可以表示到-2^N.这时,符号位的1既表示符号"-",也表示数值2.

4. 补码的简求法

给一个X,若:

(1) X>=0; 则[X]补= X, 并使其符号位为0.

相关文档
最新文档