计算机组成原理-(2).ppt_第1页
计算机组成原理-(2).ppt_第2页
计算机组成原理-(2).ppt_第3页
计算机组成原理-(2).ppt_第4页
计算机组成原理-(2).ppt_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第二章 计算机中数据信息的表示 数据是计算机处理的对象。 本章讨论的是计算机内部各类数据的表示方法及其相互间的等值转换。 信息处理领域中“数据”概念要大得多。世界上的一切事物和现象都可以通过一组特征“数据”去描述它。对于计算机而言,它所处理的就是事物和现象的“特征描述数据”。 不管计算机要处理的对象是什么事物或现象,都必须通过某种方式获取其“特征描述数据”,才能在计算机中进行处理。 ISO对数据所下的定义是:“数据是对事实、概念或指令的一种特殊表达形式,这种特殊的表达形式可以用人工的方式或者用自动化的装置进行通信、翻译转换或者进行加工处理” 。 根据这个定义,通常意义下的数值、文字、图画、

2、声音、活动图象等对于人来说都可以认为是数据。 通常把计算机内部由硬件实现的基本数据分为数值型数据和非数值型数据。,2,数值型数据:可用来表示数量的多少,可比较其大小,具有特定值的一类数据。 非数值型数据:主要指字符数据、逻辑数据等。在一些 专用处理器上指令集可对多媒体信息进行处理,此时图形、声音和活动图象数据看成非数值型数据。 信息:根据ISO定义,可以通俗认为,信息是对人有用的数据,这些数据可能影响到人们的行为和决策。 计算机信息处理,简言之由计算机进行数据处理,处理主要目标是获取有用信息。即通过数据采集和输入、有效地把数据组织到计算机中,由计算机系统对数据进行相应的处理加工(如存储、建库、

3、转换、合并、分类、计算统计、汇总、传送等操作),最后提供有用的信息给用户。 媒体承载信息的载体。 根据ITU下属CCITT的定义,与计算机信息处理有关的媒体有5种:,3,感觉媒体 表示媒体 存储媒体 表现媒体: 传输媒体:通信载体 数字计算机内部所处理的所有数字都是“数字化编码”了的数据,即都是一种表示媒体信息。,4,“数字化编码”过程:指对感觉媒体信息进行定时采样,将现实世界中的连续信息转换成计算机中的离散的“样本”信息。然后对这些离散的“样本”信息用“0”或“1”这两个基本符号进行数字化编码,即对样本值进行二进制编码。 编码:就是用少量简单的基本符号,对大量复杂多样的信息进行一定规律的组合

4、。 基本符号和组合规则是一切信息编码的两大要素。 计算机内部采用二进制表示的原因有以下三个原因: 二进制只有两种基本状态,与两个稳定状态的物理器件的状况相符,易实现。 二进制的编码、计数和运算规则简单易行。 “0”和“1”两个符号正好与逻辑命题的两个逻辑值“假”和“真”相对应,为计算机应用于逻辑判断提供了方便。 计算机内部处理的对象分为两大类:数值型数据和非数值型数据。 数值数据的编码表示 输入到计算机内部的数据若有确定的值,即在数轴上能找到其对应的点,则称为数值数据。,5,计算机内部的数值数据的表示方法有两大类:直接用二进制数表示或采用二进制编码的十进制(BCD码Binary Coded D

5、ecimal Number)表示。 2.1 进位计数制与数制之间的转换 进位计数制用少量的符号(也称数码),按先后次序把它们排列成序列,由低到高进行计数,计满进位。 基数计数制中所用到的数字符号个数。 位权(权数)以基数为底的指数,指数的幂是数位的序号。 一般而言,在任一个进位计数制中,若具有0,1,R-1共R个数字字符,则称该数字系统为R进制数字系统,其基数为R,采用的是“逢R进一”的运算规则,第i位上的位权为Ri。其位权展开式如下:,6,一般地,一个十进制数 D=dn-1dn-2d1d0.d-1d-2 d-m 其对应值为: V(D) 10 =dn-210n-2 +dn-110n-1+ +

6、d1101+d0100+d-110-1 +d-210-2+ + d-m 10-m 其中di (i=n-1,1,0,-1,-2,-m)可是09十个数字符号中任何一个,故基数为“10”。 10i为第i位上的位权。在十进制数进行运算时,每位计满十之后要向高位进一。 例:十进制数2059.65代表的实际值用位权展开为 V(2059.65)10=2103+ 0102+ 5101+ 9100+ 610-1+ 510-2 同理,二进制数的基数是2,只有两个数字符号“0”和“1”,采用“逢二进一”的规则。 例:二进制数(100101.01)2的实际值 (100101.01)2=125+024+023+122

7、+021+ 020+02-1+ 12-2 一般地,一个二进制数 B=bn-1 bn-2b1b0.b-1b-2 b-m,7,其对应值为: V(B)2= bn-12n-1+ bn-22n-2+b121+b020+b-12-1+b-2 2-2+ +b-m 2-m 其中bi (i=n-1,n-2,1,0,-1,-2,-m)可是0或1两个数字之一。 例2.1计算机系统中常用的进位计数制有: 二进制数:基数为2,各位数字的取值范围是0l,计数规则是“逢二进一”,后缀为B。 如(10100011.1101)2=10100011.1101B。 八进制数:基数为8,各位数字的取值范围是07,计数规则是“逢八进一

8、”,后缀为O或Q。 如(137.67)8=137.67Q。 十进制数:基数为10,各位数字的取值范围是O9,计数规则是“逢十进一”,后缀为D或不用后缀。 如(2357.89)10=2357.89 或 (2357.89)10=2357.89D。 十六进制数:基数为16,基本符号0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。计数规则是“逢十六进一”,后缀为H, 如(A9BF.36E)16=A9BF.36EH。,8,四种进位计数制之间的关系见下表。,9,在进行不同进制数的转换时,应注意以下几个方面的问题: 1)不同进制数的基数不同,所使用的数字的取值范围也不同。 2)将任意进制数转

9、换为十进制数的方法是“按权相加”,即利用按权展开多项式将系数xi与位权值相乘后,将乘积逐项求和。 例 (100101.01)2=(125+024+023+122+021+120+02-1 +12-2)10=(37.25)10 例 (307.4)8=(382+081+780+48-1)10=(199.5)10 例 (4A.2)16=(416+10160+416-1)10=(74.125)10 3)将十进制数转换为任意进制数时,整数部分与小数部分需分别进行转换。整数部分的转换方法是“除以基取余”,小数部分的转换方法是“乘以基取整”。,10,(1)利用除以基取余法将十进制整数转换为R进制整数的规则:

10、 把被转换的十进制整数除以基数R,所得余数即为R进制整数的最低位数字。 将前次计算所得到的商再除以基数R,所得余数即为R进制整数的相应位数字。 重复步骤,直到商为0为止。 (2)利用乘以基取整法将十进制小数转换为R进制小数的规则: 把被转换的十进制小数乘以基数R,所得乘积的整数部分即为R进制小数的最高位数字。 将前次计算所得到的乘积的小数部分再乘以基数R,所得新的乘积的整数部分即为R进制小数的相应位数字。 重复步骤,直到乘积的小数部分为0或求得所要求的位数为止。 4)因为23=8,24=16,所以二进制数与八进制数、十六进制数之间的转换可以利用它们之间的对应关系直接进行转换。,11,(1)将二

11、进制数转换为八进制数的方法: 将二进制数的整数部分从最低有效位开始,每三位二进制数对应一位八进制数,不足三位,高位补0。 将二进制数的小数部分从最高有效位开始,每三位二进制数对应一位八进制数,不足三位,低位补0。 (2)将二进制数转换为十六进制数的方法: 将二进制数的整数部分从最低有效位开始,每四位二进制数对应一位十六进制数,不足四位,高位补0。 将二进制数的小数部分从最高有效位开始,每四位二进制数对应一位十六进制数,不足四位,低位补0。 例2.2将二进制数110011.101转换为十进制数。 解:利用按权展开多项式,采用“按权相加”的方法进行转换。 (110011.101)2=25+24+2

12、1+20+2-1+2-3 =32+16+2+1+0.5+0.125 =(51.625)10,12,8 104 0,例2.3将 (10101.0110101)2转换为八进制数和十六进制数。 解:根据二进制数转换为八进制数的方法可得 (10101.0110101)2=(010 101.011 010 100)2 = (25.324)8 根据二进制数转换为十六进制数的方法可得 (10101.0110101)2=(0001 0101.0110 1010)2 = (15.6A)8 例2.4 将十进制数834转换成八进制数 余数 低位,8 834 2,8 1 1,8 13 5,0 高位,所以(834)10

13、=(1502)8 将十进制数834转换成二进制数,13,0 高位,所以,所以(835)10=(11 0100 0010)2,余数 低位,14,1 1.50 2,0 0.75 2,1 1.375 2,例将(0.6875)10转换为二进制数。 高位 整数位,0.6875 2,1 1.0,低位 故(0.6875)10=(0.1011)2,15,将(0.6875)10转换为八进制数。 高位 整数位,低位 故(0.6875)10=(0.54)8 注意:由于计算机的位数限制,或者被转换的十进制实数不一定表达成2-i的形式,其转换的结果,一般为近似值。 例: 将(0.15)10转换为二进制数,设计算机系统为

14、8位二进制,则小数为7位,转换过程如下:,0.6875 8,5 5. 5 8,4 4. 0,16,0.15 2,0 0.30 2,0 0.60 2,0 0.40 2,高位 整数位,1 1.20 2,0 0.80 2,1 1.20,1 1.60 2,低位 故(0.15)10(0.0010011)2,17,2.2 带符号数的表示 2.2.1 机器数与真值 采用二进制表示形式的连同数符一起代码化了的数据,在计算机中统称为机器数或机器码。 真值-用正、负符号加绝对值来表示的实际数值。 机器数可分为无符号数和带符号数两种。 无符号数-是指计算机字长的所有二进制位均表示数值。 带符号数-是指机器数分为符号

15、和数值部分,且均用二进制代码表示。 例25设某机器的字长为8位,无符号整数在机器中的表示形式为:,带符号整数在机器中的表示形式为:,18,分别写出机器数10011001作为无符号整数和带符号整数对应的真值。 解:10011001作为无符号整数时,对应的真值是 (10011001)2=(153)10 10011001作为有符号整数时,其最高位的数码1代表符号“-”,所以与机器数10011001对应的真值是 (-0011001)2=(-25)10 综上所述,可得机器数的特点为: (1)数的符号采用二进制代码化,0代表“+”,1代表“-”。通常将符号的代码放在数据的最高位。 (2)小数点本身是隐含的

16、,不占用存储空间。 (3)每个机器数数据所占的二进制位数受机器硬件规模的限制,与机器字长有关。超过机器字长的数值要舍去。,19,例如,如果要将数x=+0.101100111在字长为8位的机器中表示为一个单字长的数,则只能表示为01011001,最低位的两个1无法在机器中表示。 因为机器数的长度是由机器硬件规模规定的,所以机器数表示的数值是不连续的。 例如8位二进制无符号数可以表示256个整数: 0000 00001111 1111可表示0127; 8位二进制带符号数中: 0 00000000 1111111可表示正整数0127, 1 11111111 0000000可表示负数-1270,共25

17、6个数, 其中00000000表示+0,10000000表示-0。 2.2.2 原码表示 编码系统 确定一个数值数据的三要素是:进位计数制、定点/浮点表示和编码表示。它们分别用来解决数值数据的基本符号、小数点位置和数的正负号。,20,设n+1位机器数X的数字化编码后的机器数X表示为: xnxn-1x1x0。 其中xi为0或1。 机器数X的第一位xn为数的符号,它的取值与真值XT有关。大多数情况下,取值0表示该数为正,取值1表示该数为负。 机器数X中除了xn之外的后n位:xn-1x1x0是数值部分,各位取值与编码有关,各位取值规定如下: 当XT0时, xi = xi (X为定点整数),或xi =

18、 xi-n (X为定点小数) 当XT0时,数值部分各位取值依赖于相应的编码方式,常用的编码方式有原码、补码和反码三种。 原码表示法 原码表示法也称“数值-符号”表示法。符号用“0”表示“+”,“1”表示“-”。 设有定点小数0.x1x2 xn ,其原码用n+1位字长表示形式为xs.x1x2 xn ,其中xs为符号位。那么,原码的定义如下:,21,设有定点整数xnxn-1 x0 ,其原码用n+1位字长表示形式为xs,xn-1xn-2 x0 ,其中xs为符号位。那么,原码的定义如下:,例2.6 已知x,求x的原码x原。 x=+0.1010110 x=-0.1010110 x= +1010110 x

19、= +1010110 解:根据原码的定义,可得 x原=x=0.1010110 x原=1-x=1+|x|=1+0.1010110= 1.1010110 x原=x=0 1010110 x原=2n-x=2n+|x|=1 0000000+ 0 1010110=1 1010110,22,由例2.6的结果可知: (1) x原的表示形式x0.x1x2 xn为符号位加上x的绝对值。 当x0时,符号位x0=0; 当x0时,符号位x0=1。 (2)当x为纯小数时,X原中的小数点默认在符号位x0和数值最高位x1之间; 当x0时, x原=x; 当x0时, x原=l+|x|,即符号位加上x的小数部分的绝对值。 当x为纯

20、整数时, x原中的小数点默认在数值最低位xn之后; 当x0时, x原=x; 当x0时, x原=2n-x=2n+|x| ,其中2n是符号位的权值, 2n+|x|相当于使符号为l。 (3)将x原的符号取反,即可得到-x原。 2原码中0的表示 纯小数+0和-0的原码表示: +0原=0.000 -0原=1.000,23,纯整数+0和-0的原码表示: +0原=0 000 -0原=1 000 3原码的左移和右移 对于二进制纯小数x=0.x1x2 xn 求2x时,只需将0.x1x2 xn依次左移一位,最低位的空位填0即可, 即2x=x1.x2 xn0。当然,为了保证x左移后仍然是纯小数,0.x1x2 xn中

21、的x1应为0,否则2x就会大于1,而不是纯小数了。,只需将x1x2xn依次右移一位,移出的最高位的空位填0即可,原码的移位规则是:符号位不变,数值部分左移或右移,移出的空位填0。 例2.7 已知x原,求2x原、 x/2原。,24, x原=0.0101001 x原=10011010 解: 2x原=0.1010010 左移后,符号位保持不变,最高位移出,最低位填0。 x/2原=1.0010100 右移后,符号位保持不变,最高位填0,末尾的1移出。 2x原=10110100 x/2原=1 0001101 在原码的左移过程中,注意不要将高位的有效数值位移出,否则将会出错(称为上溢)。 4原码的特点 (

22、1)原码表示直观、易懂,与真值的转换容易。 (2)原码表示中0有两种不同的表示形式,给使用带来了不便。 (3)原码表示法的缺点:原码表示的加减运算复杂。,25,2.2.3 补码表示 补码表示法也称“符号-2”表示法。也就是补码表示的机器数由符号后跟上真值的模2补码构成。 模运算 剩下的低n位不能正确反映运算结果,也即舍弃的高位是运算的一部分,意味着计算结果超出了计算机所能表示的范围,我们称之为“溢出”。 剩下的n位数能正确表示运算结果,也即舍弃的高位是并不影响运算结果。 对于一个多于n位的数丢弃高位而保留低n位数的过程,实际上是等价于将这个多于n位的数去除以2 ,然后丢去商保留余数,这种操作运

23、算就是模运算。 在模运算中,若A,B,M满足下列关系: A=B+KM (K为整数) 则记为 AB (mod M) 上式表示A和B分别除以M后所得余数相同。称B和A关于模M同余。也就是说,一个数与除以一个模M后所得的余数是等价的。,26,例:时钟系统的模数是12。设现在时间是6点,而表停在10点上,则有两种校正方法: 10-4=6 10+8 =18=10+(12-4) 6 (mod 12) 所以在模12系统中:10-410+8 (mod 12),即 -48 (mod 12) 称8是-4对模12的补码。同理称9是-3对模12的补码。 由上例可得如下结论: 对于一个确定的模,某数减去小于模的一个数,

24、总可以用该数加上模与减数的绝对值之差来代替,即用该数加上另一数对于模的补码来代替。 对于任意x,在模M的条件下的补数x补,可由式(2-4)给出: x补=m+x(mod M) (2-4) 例 时钟系统 10-410+(12-4)10+86 (mod 12),27,例 4位十进制计数器 9828-19289828+(104-1928)9828+8072 7900 (mod 104) 根据式(2-4)可知: (1)当x0时,m+x大于M,把M丢掉,得x补=x,即正数的补数等于其本身。 (2)当x0时,x补 m+xM-|x|,即负数的补数等于模与该数绝对值之差。 例2.8求 模M=2时,二进制数x的补

25、数。 x+0.10110101 x-0.10110101 解: 因为x0,把模2丢掉,所以x补=2+x=0.10110101 (mod2) 因为x0,所以x补=2+x=2-|x|=10.00000000-0.10110101 =1.01001011 (mod 2) 2补码的定义 设补码的位数为n+1位(其中符号占1位),数值部分为n位。则补码定义如下:,28, 设有定点小数0.x1x2 xn ,其补码用n+1位字长表示形式为xs.x1x2 xn ,其中xs为符号位。那么,其补码的定义如下:,设有定点整数xnxn-1 x0 ,其原码用n+1位字长表示形式为xs,xn-1xn-2 x0 ,其中xs

26、为符号位。那么,补码的定义如下:,例2.9 已知x,求x的补码x补 x=+0.1010110 x=-0.1010110 x=+1010110 x=-1010110 解:根据补码的定义,可得 x补=x=0.1010110 x补=2+x=10.0000000+(-0.1010110 )=1.0101010 x补=x= 0 1010110 x补=27+x=10000000+(-1010110 )=1 0101010,49,29,3特殊数的补码表示 (1) 真值0的补码表示 根据补码的定义可知,真值0的补码表示是惟一的,即: +0补= -0补=20.00.0=0.000 (纯小数) +0补= -0补=

27、2n+10000=0000 (纯整数) (2) -1和-2n的补码表示 在纯小数补码表示中, -1补=2+(-1.00.0)=1.000,4补码的简便求法 给定一个二进制数x,如果需要求其补码,可以直接根据定义求得。但当x0时,根据定义需要做减法运算,不太方便,因此可采用以下简便方法: (1)若x0,则x补=x,并使符号位为0。 (2)若x0,符号固定为1,数值部分的各位取反,末位加1。即得x补,30,例2.10 证明补码的简便求法。 证:设x为纯小数,根据式(2-5)的定义,有 当x=+0.x1x2 xn 时, x补= 0.x1x2 xn ,这时符号位x0=0,表示x0; 当=-0.x1x2

28、 xn时, x补=2+x=2-0.x1x2 xn =1.111+0.001-0.x1x2 xn=1.111-0.x1x2 xn +0.001,所以当x0时,将x的各位取反,再在最低位上加1,即可求得x的补码x补。 还有一种简单的方法求负数x的补码: x0,符号位固定为1,从右往左查其原码,遇到第1个时,其右各位0和该位1照写,该位1之左各位取反即可。 例2.11 用简便方法求出例2.9中x的补码。 x=+0.1010110, x0,x补= 0.1010110 x=-0.1010110, x0,x补=1.0101010 x=+1010110, x0,x补=0 1010110 x=-1010110

29、, x0,x补=1 0101010,31,例 已知x补=1 0100110,求x。 解: x0=1,表明x0,可用下面两种方法求x真值。 将x的各位取反,再在最低位上加1,即可求得 x补的真值x x=-(1011001+1)=-1011010 符号位为1,则真值符号取“-” ,数值位从右往左遇到第1个时,其右各位0和该位1照写,该位1之左各位取反即可。 x=-1011010,32,图2-1 补码的几何性质,补码的几何性质说明了以下两点: (1)正数的补码表示就是其本身,负数的补码表示的实质是把负数映像到正值区域,因此加上一个负数或减去一个正数可以用加上另一个数(负数或减数对应的补码)来代替。,

30、(2)从补码表示的符号看,补码中符号位的值代表了数的正确符号,0表示正数,1表示负数;而从映像值来看,符号位的值是映像值的一个数位,因此在补码运算中,符号位可以与数值位一起参加运算。,33,6补码的几个关系 补码与原码的转换关系 若x0,则x原= x补 。 若x0,则将x原除符号位以外的各位取反后(即符号位不变),再在最低位上加1,即可得到x补;反之,将x补除符号位以外的各位取反后,再在最低位上加1,即可得到x原。 例2.12将下列x的原码表示转换为补码表示。 x原=0.1010110 x原=1.1010110 x原=01010110 x原=11010110 解:根据原码与补码的转换原则,得

31、x原=0.1010110, x0 x补=0.1010110 x原=1.1010110, x0 x补=1.0101010 x原=0 1010110, x0 x补=0 1010110 x原=1 1010110 , x0 x补=1 0101010 例2.13将下列x的补码表示转换为原码表示,并求出对应的真值。 x补=1.10110 x补=1.11101,34,解: x补=1.10110 x原= 1.01010, x=-0.01010 x补=1.11101 x原= 1.00011, x=-0.00011 补码与机器负数的关系 由x补求-x补规则是:连符号位一起取反,末位加1。 证明如下: 设x补=1.

32、0100110,求-x补 x原=1.1011010 x =-0.1011010 则 -x =+0.1011010 所以 -x补=0.1011010 例2.14 已知x补,求-x补 。 x补=0 1001101 x补=1 0110010。 解:根据对X补求补的规则,得 x补=0 1001101, -x补=1 0110011 x补=1 0110010, -x补=0 1001110,35,补码的左移和右移 例:由x补求x/2补。 设 x补=x0.x1x2 xn,当 x0=0时,即x值为正,x补=0.x1x2 xn=,即 x= 1.x1x2 xn-2= -1+0.x1x2 xn=-1+,故 x= -x

33、0+,而,当 x0=1时,即x值为负,x补=1.x1x2 xn= 2+x,写成补码形式,即得: x/2补= x0.x0 x1x2 xn,36,由此可见, x/2补是x补连同符号一起右移1位,依此类推求 2-ix补,则x补连同符号一起右移 i 位即可。,根据二进制数的移位规则和补码的定义,可知补码的移位规则: 补码的左移:符号位不变,数值部分左移,最低位移出的空位填0。 补码的右移:符号位不变,数值部分右移,最高位移出的空位填补与符号位相同的代码。 例2.15 已知x补,求2x补,x/2补 x补=0.0101001 x补=11011010 解: x补=0.0101001, 2x补=0.10100

34、10 左移后,符号位保持不变,数值最高位移出,最低位填0。 x/2补=0.0010100 右移后,符号位保持不变,数值最高位填与符号位相同的0,末尾的1移出。,37, x补=1 1011010, 2x补=1 0110100 左移后,符号位保持不变,数值最高位移出,最低位填0。 x/2补=1 1101101 右移后,符号位保持不变,数值最高位填与符号位相同的1,末尾的0移出。 设X补=1.0100110,则 X/2补=1.1010011,X/4补=1.1101001,。 7补码的特点 (1)在补码表示中,用符号位x0表示数值的正负,形式与原码表示相同,即0为正;l为负。但补码的符号可以看做是数值

35、的一部分参加运算。 (2)在补码表示中,数值0只有一种表示方法,即000。 (3)负数补码的表示范围比负数原码的表示范围略宽。纯小数的补码可以表示到-l,纯整数的补码可以表示到-2n。,38,2.2.4 反码表示 反码表示也是一种机器数,它实质上是一种特殊的补码,其特殊之处在于反码的模比补码的模小一个最低位上的1。 1反码的定义 根据补码的定义可以推出反码的定义如式(2-7)和式(2-8)所示。 设有定点小数0.x1x2 xn ,其反码用n+1位字长表示形式为x0.x1x2 xn ,其中x0为符号位。那么,其反码的定义如下:,设有定点整数xnxn-1 x0 ,其反码用n+1位字长表示形式为xn

36、,xn-1xn-2 x0 ,其中xn为符号位。那么,反码的定义如下:,其中,n为数值位的长度。,39,根据反码的定义可得反码表示的求法: (1)若x0,则使符号位为0,数值部分与x相同,即可得到x反。 (2)若x0,则使符号位为1, x的数值部分各位取反,即可得到x反。 例2.16 已知x ,求x反。 x=+0.0101001 x= +1011010 x=-0.0101001 x=-1011010 解:根据反码的定义,可得 x反=0.0101001 x反=0 1011010 x反=1.1010110 x反=1 0100101 设x反= x0.x1x2 xn,根据反码表示和原码表示的特点,可以得

37、到反码与原码的关系: (1)若x0,即x0=0,则x反=x原= x0.x1x2 xn 。,(2)若x0,即x0=1,则x反= ,即保持x原的符号不变,将x原的其他位取反,就可得到x反。,40,例2.17 已知x原和x补,求x反。 x原=0.0101001 x原=11011010 x补=0.0101001 x补=11011010 解: x原=0.0101001, x0,x反= x原=0.0101001 x原=11011010 , x0,保持x原的符号不变,将x原的其他位取反,得x反=10100101 x补=0.0101001 , x0,x反= x原= x补=0.0101001 x补=1 1011

38、010 , x0, 根据x原与x补的关系,得 x原= 10100110,再根据x反与x原的关系,得x反=1 1011001。 2反码的特点 (1)在反码表示中,用符号位x0表示数值的正负,形式与原码表示相同,即0为正;1为负。 (2)在反码表示中,数值0有两种表示方法:,41,纯小数的+0和-0的反码表示: +0反=0.000 -0反=1.111 纯整数的+0和-0的反码表示: +0反=0 000 -0反=1 111 (3)反码的表示范围与原码的表示范围相同。注意,纯小数的反码不能表示-1,纯整数的反码不能表示-2n。 (4)反码表示在计算机中往往作为数码变换的中间环节。 注: 反码又称基数减

39、1补码。即一个数的反码的各位数字由基数R减去1后再减去该数的对应位而成。 从定义看,反码也就是以(Rn -R-m)为模的补码。m为小数部分位数。若R=2,则对于n位定点整数(即m=0),此时模为2n-1。对于m位定点小数(即n=1),此时模为2-2-m。 二进制数1010的反码=(24-1)-1010=1111-1010=0101。它又称为1-补码(1的补码)。 对于十进制系统的3725反码=(104-1)-3725=9999-3725 =6274。又称9的补码。,42,反码运算是以(Rn -R-m)为模的条件下进行的。所以Rn -R-m 0 (mod Rn -R-m) Rn R-m (mod

40、 Rn -R-m) 这意味着若运算中产生了Rn(即最高进位),就必须把它加到末位上去,这叫“循环进位”。 例:用反码运算来计算9828.45-1928.45 9828.45-1928.45= 9828.45+(104-102-1928.45) = 9828.45+(9999.99-1928.45) = 9828.45+8071.54 9828.45 + 8071.54,1 7899.99,1,7900.00,43,三种码制的比较 主要区别如下: 对于正数,三种码制均等于真值本身,正号用0表示。而负数各有不同的表示。 最高位均表示符号,补、反码的符号位可看作数值一部分,各数值一起参与运算;原码符

41、号位则和数值部分别对待,不能参与运算。 对于真值0,原、反码各有两种表示形式,补码的0的表示是唯一的。 原、反码表示的正负数范围相对于0而言是对称的,对于n+1位的二进制数来说,原码和反码表示 的范围是: 定点整数 (2n-1) 定点小数 (1-2-n) 补码表示正负数范围相对于0是不对称的,其负数表示范围比正数表示范围宽,能多表示一个最小的负数(即绝对值最大的负数)。 定点整数 -2n (2n-1) 定点小数 -1 1-2-n 定点整数是其最小值等于-2n,定点小数的最小的数为-1。,44,各种编码采用不同的方法进行移位处理。对于带符号的定点数,应采用算术移位方法(即对数值部分进行移位,符号

42、位不动)。 各种编码的数值部分的移位规则如下: 原码 左移:高位移出,末位补0。若移出非0时,发生溢出。 右移:低位移出,高位补0。移出时要进行四舍五入。 补码 左移:高位移出,末位补0。若移出位与符号位不同时,发生溢出。 右移:低位移出,高位用符号补足。移出时要进行四舍五入。 反码 左移:高位移出,末位补符。若移出位与符号位不同时,发生溢出。 右移:低位移出,高位补符。移出时要进行四舍五入。 例已知X补=1.0100110,假定补码为8位,求x/2补,x/4,2x补。,45,x/2补=1.10100110=1.1010011 x/4补=1.11010011=1.1101010(四舍五入) 2

43、x补=1.1001100 移出的最高位为0与符号位1不同,故产生溢出。 不同的编码在扩展时采用不同的方法进行填充处理。对于定点小数的扩展,是在低位进行填充处理;定点整数的扩展,是在高位进行填充处理。 原码 定点小数:在原数的末位补足0。 定点整数:符号不变,在原数符号位后补足0。 补码 定点小数:在原数的末位补足0。 定点整数:符号不变,在原数符号位后用数符补足所需的位数。 2.2.5移码表示 1移码的定义 移码的定义如式(2-9)和式(2-10)所示。,46,纯小数移码的定义: x移=1+x -1x1 (2-9) 纯整数移码的定义: x移=2n+x -2nx2n (2-10) 下面以,n=3

44、时纯整数的移码为例,看一下移码的几何性质。 为x移=23+x,如表2-2所示。,表2-2 n=3位时所有整数的补码,47,图2-2 移码的几何性质,48,2.移码与补码的关系 根据式(2-6)给出的纯整数的补码定义可知: (1)当0 x2n时, x补=x,因为x移=2n+x,所以x移=2n+x补。 (2)当-2nx0时,x补=2n+1+x, x移=2n+x,x移=2n+ x补-2n+1 其中,n为数值部分的长度。 例2.18 已知x,求x补和x移。 x=+1011010 x=-1011010 解: x0,x补=0 1011010, x移=2n+x=2n+1011010=1 1011010 x0

45、,x补=1 0100110, x移=2n+x=2n+(-1011010)=0 0100110 3移码的特点 (1)设x移= x0.x1x2 xn ,符号位x0表示真值x的正负。 x0=1,x为正; x0=0,x为负。,49,(2)真值0的移码表示只有一种形式:+0移= -0移=1000。 (3)移码与补码的表示范围相同。 纯小数的移码可以表示到-1, -1移=0.000; 纯整数的移码可以表示到-2n ,n为数值部分的长度, -2n 移=0 00。 (4)真值大时,对应的移码也大;真值小时,对应的移码也小。 综上所述,各种码制之间的关系以及转换方法如图2-3所示。若真值x为正,使符号位x0=0

46、;若真值为负, x0=1,数值部分不变,就得到x对应的原码。 真值x为正数时, x原=x反=x补。 当真值x为负时, x对应的原码、补码、反码表示各不相同。保持原码符号位不变,数值位各位取反即得反码;反码末位加1即得补码。不论真值x是正数还是负数,将其对应的补码的符号位取反,数值位不变,即可得到x对应的移码。 各种码制之间关系与转换方法见下图,50,例2.19设某计算机的字长为8位,采用纯整数表示。表2-3中给出了相同的机器数在不同表示形式中对应的十进制真值。,51,无符号数值的大小 0 1 127 128 129 255,真值与补码、移码和无符号数对应关系见下表,52,2.3 数的定点表示与

47、浮点表示 例如: (N)10=123.456=12345610-3=0.123456103 。 同理,同一个二进制数也可以表示成不同的形式,例如 (N)2=1101.0011=110100112-3=0.110100112+3。 由此可见,任何一个R进制数N均可以写成式(2-11)所示的形式: (N)R=SRe (2-11) 其中,S:尾数,代表数N的有效数字; R:基值,由计算机系统的设计人员约定,不同的机器,R的取值不同。计算机中常用的R的取值为2、4、8、16; e:阶码,代表数N的小数点的实际位置。 根据小数点的位置是否固定,计算机采用两种不同的数据格式,即定点表示和浮点。 2.3.1

48、 定点表示 定点小数 假想小数点位置固定在符号位与最高一位有效数据位之间,记为,53,xs.xnxn-1x1。,其结果总是0. x1x2xn。原码表示范围是-(1-2-n) 1-2-n。 补码表示范围是-11-2-n,54, 定点整数 假想小数点位置固定在最低一位有效数据位之后,记为 xs,xnxn-1x1。,其结果总是xnxn-1x1。原码表示范围是-(2n-1) 2n-1 。 补码表示范围是-2n 2n-1 。,55,3定点数的分辨率 定点数在数轴上的分布是不连续的,定点数的分辨率是指相邻两个定点数之间的最小间隔。字长为n+l的定点小数的分辨率为2-n;字长为n +1的定点整数的分辨率为1

49、。 4定点机的特点 硬件上只考虑定点小数或定点整数运算的计算机称为定点机。定点机的优点在于运算简单,硬件结构比较简单。但存在的问题是: (1)所能表示的数据范围小 (2)使用不方便,运算精度较低 例如8位字长的二进制定点小数所能表示的最大正数为 x=0.1111111,对于加法运算111.1011+111.0011,比例因子选择不当,会产生溢出或损失最低位的有效数字。可见采用比例因子进行运算,增加了用户的不便。当然,在现代的计算机中,比例因子的选择工作已经交由系统程序完成。,56,(3)存储单元利用率低 由此可见,虽然定点运算简单、硬件实现容易,但在实际应用中,由于数值的分布范围很大,对有限位

50、数的定点数利用比例因子进行运算,很难兼顾数值范围和精度的要求,不适合科学计算,因此引入了浮点表示法。 2.3.2 浮点表示 定点数表示数值数据时,只能表示纯整数或纯小数,表示数的范围有限。 例:对于一个n+1位的带符号(数值n位,1位符号)的定点数,其表示数据的范围: 原码和反码:小数 -(1-2-n ) (1-2-n )。 整数 -(2n-1) (2n-1 )。 补码: 小数 -1 (1-2-n )。 整数 -2n (2n-1 )。 而浮点形式不仅可表示整数和纯小数,而且可表示 一般的实数。绝大多数情况下,其表示范围比定点表示范围大得多。,57,1. 浮点表示的数据格式 用浮点数表示一个数值

51、时,实际上是用两个定点数来表示的: 用定点小数表示浮点数的尾数, 用定点整数表示浮点数的阶(一般用移码表示)。 对于任意一个浮点数X,可以表示成如下形式: X=(-1)SfSRE 其中 Sf为数符,取值为0或者1,决定X的符号。 S为一个二进制定点小数,称为数X的尾数。S的位数反映X的有效位数,它决定数的精度。 R为基数,可以取2、4、8、16等。 e为一个二进制定点整数,称为数X的阶码。e的位数决定X的表示范围,e的值确定了运算数据的小数点的位置。,58,浮点数X从形式来说,绝对值最小的数是0.001R-111。绝对值最大的数的形式是0.111R111。设k和n分别表示阶码和尾数的位数,基数

52、为2,则浮点数X的表示范围是 2-(2k-1) 2-n |X| 2(2k-1)(12-n) 。,59,2. 浮点数的规格化 采用规格化表示的目的在于: (1)为了提高运算精度,应尽可能占满尾数的位数,以保留更多的有效数字。 (2)为了保证浮点数表示的惟一性。 浮点数的尾数的位数表示了浮点数的有效位数。位数越多,精度越高,反之则反。必须在运算过程中经常对浮点数进行“规格化”操作。 从理论上讲,规格化数的标志是真值尾数的最高位为非零数字, 即为0.1x1x2xnRE的形式(xi为0,1,R-1 之 一)。 也就是说,若基为R,则规格化数的标志是尾数的真值的绝对值大于等于1/R。即 S-1/R,或S

53、1/R 一般计算机规定对于基为2并用补码表示的尾数,其规格化的标志1/2|S|1,60,若尾数采用原码表示,S原=Sf.S1S2Sn,Sf为尾符(即数符),则把满足S1=1的数称为规格化数。即当尾数的最高位满足S1=1, S原=0.1 或S原=1.1 时, 表示该浮点数为规格化数,尾数的有效位数已被充分利用 若尾数采用补码表示,是“尾数的符号位和尾数的最高位具有不同的代码”。即其规格化数的判别为:SfS1=1? 但“-1/2”(即1.100)被排除在规格化数之外。这主要是考虑它的符号位与尾数的最高位相同了,不好用SfS1=1 来判别浮点数是否规格化了。所以按照补码表示的尾数的特殊规定,-1/2

54、不是规格化数。还有补码可以表示-1,所以,-1/2(即1.100)采用左移1位的方法,将尾数变为-1(即1.000) ,而阶码减去1,即规格化了。 规格化有两种操作:左规和右规。,61,图2-8 浮点表示的数据格式举例,图2-7 浮点数表示范围,设浮点表示的数据格式如图2-8所示。其中基数R=2,数符和阶符各占1位,阶码为m位,尾数为n位。,3. 浮点数的表示范围,62,(1)阶码与尾数均采用原码表示时,典型数据的机器数形式和对应的真值如表2-8。,63,(2)阶码与尾数均采用补码表示时,典型数据的机器数形式和对应的真值如表2-9所示。,64,(3)阶码采用移码,尾数采用补码表示时,典型数据的

55、机器数形式和对应的真值如表2-10所示。,表2-10 阶码采用移码,尾数采用补码表示,65,所谓机器零是指: 如果一个浮点数的尾数为全0,则不论其阶码为何值; 或者如果一个浮点数的阶码小于它所能表示的最小值,则不论其尾数为何值; 计算机在处理时都把这两种浮点数当作零看待。 特别是当浮点数的阶码采用移码表示、尾数采用补码表示时,如果阶码为它所能表示的最小数-2m(m为阶码的位数)且尾数为0时,即其阶码的表现形式全为0,尾数的表现形式也为全0,这时机器零的表现形式为00000。这种全0表示,有利于简化机器中的判0电路。 所谓单精度浮点数就是用一个字长表示一个浮点数; 双精度浮点数是用两个字长表示一

56、个浮点数。 例2.20 VAX一1I系列机的浮点数格式 单精度浮点数-F浮点,66,双精度浮点数-G浮点,补充例1 将十进制数65798转换成IBM370机的短浮点数格式(32位)。IBM370机的短浮点数格式说明如下:,0位:数符Sf; 17位:7位移码表示的阶E(偏移常数=27-1=64); 831位:6位为十六进制的原码小数表示的尾数,即尾数的基R=16,阶码变化1,等于尾数移动4位。 因为(65798)10= (10106)16=(0.10106)16165,所以 Sf=0; 阶码E=(64+5)10=(69)10 =(1000101)2; 尾数=0.0001 0000 0001 0000 0110 0000。 故该浮点数的表示形式是,67,0位:数符Sf ; 18位:8位移码表示的阶E(偏移常数=28-1=128); 931位:虽为23位,但规定隐含了规格化后尾数第1位总是1这个值,故实为24位二进制的原码小数表示的尾数。 因为(65798)10= (10106)16=(1 0000 0001 0000 0110)2 =(0.1 0000 0001 0000 0110)2217。所以 Sf=0; 阶码E=(128+17)10=(145)10 =(10010001)2; 尾数=0. 1000 0000 1000 0011 0000 0000。 最高位的1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论