1. 首页
  2. 文档大全

计算机组成原理第4章 浮点数运算方法

上传者:97****76 2022-07-11 13:32:34上传 PPT文件 1.51MB
计算机组成原理第4章 浮点数运算方法_第1页 计算机组成原理第4章 浮点数运算方法_第2页 计算机组成原理第4章 浮点数运算方法_第3页

《计算机组成原理第4章 浮点数运算方法》由会员分享,可在线阅读,更多相关《计算机组成原理第4章 浮点数运算方法(68页珍藏版)》请在文档大全上搜索。

1、第4章 浮点运算规则浮点加减运算浮点乘除法运算浮点数的表示n机器中任何一个浮点数可写成:nMx为浮点数的尾数,一般为绝对值小于1的规格化数(补码表示时允许为-1),机器中可用原码或补码表示。nEx为浮点数的阶码,一般为整数,机器中大多用补码或移码表示。nR为浮点数的基数,常用2、8 、10或16表示。以下以基数为2进行讨论。 310123.0123XxERxMX类似于浮点加减运算n设两个浮点数 尾数的加减运算规则与定点数完全相同。当两浮点数阶码不等时,因两尾数小数点的实际位置不一样,尾数部分无法直接进行加减运算。如:x=0.123103 y=4.56102 = 0.456103xExRMxyE

2、yRMy浮点加减运算的步骤1.对阶,使两数的小数点位置对齐。2.尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。3.规格化,为增加有效数字的位数,提高运算精度,必须将求和(差)后的尾数规格化。4.舍入,为提高精度,要考虑尾数右移时丢失的数值位。5.判断结果 ,即判断结果是否溢出 1. 对阶n这一步操作是将两个加数的小数点对齐。n小阶向大阶看齐,阶码较小的数,其尾数向右移,每右移一位,阶码加“1”,直到两数阶码相同为止。n尾数右移时可能会发生数码丢失,影响精度。n例:两浮点数例:两浮点数 x = 0.1101x = 0.11012 20101, y = -(0.1010)y = -(0.

3、1010)2 21111,求,求x+yx+y。(1)首先写出x、y在计算机中的补码表示。x补=00,01;00.1101,y补=00,11;11.0110 阶码EX 尾数Mx Ey My(2)在进行加法前,必须先对阶,故先求阶差:E补=Ex补-Ey补=Ex补+-Ey补 = 00,01+11,01=11,10 即E=-2,表示x的阶码比y的阶码小,再按小阶向大阶看齐的原则,将x的尾数右移两位,其阶码加2。得x补=00,11;00.0011(01)此时,E=0,表示对阶完毕。2. 尾数求和n将对阶后的两个尾数按定点加(减)运算规则进行运算。n注意:并不考虑溢出溢出由阶码决定 接上例,两数对阶后得:

4、x补=00,11;00.0011(01)y补=00,11;11.0110 则Mx+My补=00.0011+11.0110=11.1001(01)即x+y补=00,11;11.1001(01)3. 规格化n如果采用双符号位的补码,则当M0时,其补码规格化形式为 M补=00.1 当M0时,其补码规格化形式为 M补=11.0 n但对M0时,有两种情况需特殊处理。M=-1/2,则M补=11.1000。对于补码而言,它不满足于上面的规格化表示式。为了便于硬件判断,特规定-1/2是规格化的数(对补码而言)。M=-1,则M补=11.0000。因小数补码允许表示-1,故-1视为规格化的数。 n规格化又分左规和

5、右规两种。左规。当尾数出现00.0或11.1时,需左规。左规时尾数左移一位,阶码减1,直到符合补码规格化表示式为止。右规。当尾数出现01.或10.时,表示尾数溢出,这在定点加减运算中是不允许的,但在浮点运算中这不算溢出,可通过右规处理。右规时尾数右移一位,阶码加1。 接上例,求和结果为x+y补=00,11;11.1001(01) 尾数的第一数值位与符号位相同,需左规,即将其左移一位,同时阶码减1,得x+y补=00,10;(1)11.0010(1)。4. 舍入n在对阶和右规的过程中,可能会将尾数的低位丢失,引起误差,影响精度,为此可用舍入法来提高尾数的精度。 n进行舍入时应满足两个要求n首先,对

6、每一次运算的结果而言,要保证误差不超过给定的范围。比如,设机器尾数长39位,要求每次运算误差不超过末位(即第39位)的“1”,即小于 2-39。n其次在大量的运算过程中要保证误差的平衡,即在每一次运算时,由于舍入处理,可能使运算结果增大了,也可能减少了。但总的说来,增加和减少的机会必需是均等的,否则会产生很大的积累误差。4. 舍入常用的舍入方法n“0舍1入”法:“0舍1入”法类似于十进制运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能使尾数又溢出,此时需再做一次右规。n特点:最大误差是最低位上的-1/2到接近于1/2

7、之间,正误差可以和负误差抵消。属于比较理想的方法,但实现起来比较复杂。 如上例: x+y补=00,10;(1)11.0010(1) = 00,10;11.0011n“恒置1”法:尾数右移时,不论丢掉的最高数值位是“1”或“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。n特点:误差范围扩大,但正负误差可以相互抵消,实现相对容易。5. 溢出判断n在浮点规格化中已指出,当尾数之和(差)出现01.或10.时,并不表示溢出,只有将此数右规后,再根据阶码来判断浮点运算结果是否溢出。n若机器数为补码,尾数为规格化形式,并假设阶符取2位,阶码取7位,数符取2位,尾数取n位,则

8、它们能表示的补码在数轴上的表示范围如下图。 A最小负数最小负数 2+127(-1)B最大正数最大正数 2+127(1-2-n)a最大负数最大负数 2-128(-2-1-2-n)b最小正数最小正数 2-1282-1 n浮点机的溢出与否可由阶码的符号决定。即阶码E补=01,为上溢。阶码E补=10,为下溢,按机器零处理。当阶符为“01”时,需做溢出处理。n下溢时,浮点数值趋于零,故机器不做溢出处理,仅把它作为机器零。n上溢时才是浮点数真正溢出,机器需停止运算,作溢出中断处理。n一般所说的浮点溢出,均是指上溢。n例:设x=2-101(-0.101000),y=2-100(+0.111011),并假设阶

9、符取2位,阶码取3位,数符取2位,尾数取6位,求x-y。 n解:由x=2-101(-0.101000),y=2-100(+0.111011) 得x补=11,011;11.011000,y补=11,100;00.111011对阶 E补=Ex补-Ey补=11,011+00,100=11,111 即E=-1,则x的尾数向右移一位,阶码相应加1,即 x补=11,100;11.101100求和Mx补-My补=Ex补+-Ey补 =11.101100+11.000101 =10.110001 即 x-y补=11,100;10.110001 尾数符号位出现“10”,需右规。n(续) :即 x-y补=11,10

10、0;10.110001, 尾数符号位出现“10”,需右规。 规格化 右规后得 x-y补=11,101;(1)1.011000(1)舍入处理 采用0舍1入法,其尾数右规时末位丢1,则 x-y补=11,101;11.011001溢出判断 经舍入处理后阶符为“11”,不溢出,故最终结果: x-y= 2-011(-0.100111)浮点数加减运算流程图 浮点加减法运算1.大型计算机和高档微型机中,浮点加减法运算是由硬件完成的。低档的微型机浮点加减法运算是由软件完成的,但无论用硬件实现或由软件实现加减法运算,基本原理是一致的。2.浮点加减法运算要经过对阶、尾数求和、规格化、舍入和溢出判断五步操作。其中尾

11、数运算与定点加减法运算相同,而对阶、舍入、规格化和溢出判断,则是浮点加减法与定点加减法运算不同的操作。3.在补码浮点运算中,阶码与尾数可以都用补码表示。在硬件实现的运算中,阶符和数符常常采取双符号位,正数数符用00表示,负数数符用11表示。浮点乘除法运算n设两浮点数 n则 1.阶码运算2.尾数运算xjxrSx yjyrSy yxyxjjyxjjyxrSSyxrSSyx )(1. 阶码运算n若阶码用补码运算,乘积的阶码为jx补+jy补,商的阶码为jx补-jy补。n若阶码用移码运算,则 jx移=2n+ jx -2njx2n (n为整数的位数) jy移=2n+ jy -2njy2n (n为整数的位数


文档来源:https://www.renrendoc.com/paper/212698772.html

文档标签:

下载地址