第二章2.6 浮点数表示法及浮点运算器.ppt_第1页
第二章2.6 浮点数表示法及浮点运算器.ppt_第2页
第二章2.6 浮点数表示法及浮点运算器.ppt_第3页
第二章2.6 浮点数表示法及浮点运算器.ppt_第4页
第二章2.6 浮点数表示法及浮点运算器.ppt_第5页
免费预览已结束,剩余43页可下载查看

下载本文档

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

文档简介

1、第二章第三部分浮点数的表示、运算以及浮点运算器,(1)浮点数的表示方法,把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示 数的小数点位置随比例因子的不同而在一定范围内自由浮动 一个十进制数可以写成 10e 一个进制数可以写成 e,M尾数 e指数 R基数,数的科学表达法,阶码和尾数,用定点小数表示,给出有效数字的位数决定了浮点数的表示精度,表达指数部分 用整数形式表示,指明小数点在数据中的位置决定浮点数的表示范围,早期计算机表达法,E1E2Em,M1M2Mn,Ms,阶码,尾数,数符,符号位,阶码,尾数,总位数,1,8,23,32,1,11,52,64,1,15,64,80,短浮点

2、数,长浮点数,临时浮点数,IEEE754标准: (阶码采用移码表示,阶符采用隐含方式),E=e+偏移量,32位单精度浮点数,:含阶符的阶码,8 位 阶码采用移码方式来表示正负指数,:1位符号位 0表示正数 1表示负数,:尾数,23位小数表示,小数点放在尾数域最前面,IEEE 754标准,64位双精度浮点数,:含阶符的阶码,11位,:1位符号位,:尾数,52位小数,IEEE 754标准,(2)浮点数的规格化,例:156.78=15.678101 = 1.5678102 = 0.15678103=REM,对于二进制数 1011.1101=0.10111101 2+4 = 10.111101 2+2

3、 = 1.0111101 2+3 = 1.0111101 2+11 =REM,那么,计算机中究竟采用哪种数据形式?,多种数据形式,二进制数,为什么要规格化? 使浮点数表示唯一。 保留最多的有效数字,避免丢失运算精度。 什么是规格化数? 0.5= M 1 (R=2) IEEE754标准: 1= M (R=2) 即:尾数小数点后数字为1,最高有效位为1。 例: 2010 0.111 规格化 2100 0.01011 非规格化,尾数最高有效位为1,隐藏,并且隐藏在小数点的左边(即:1M2) 32位单精度浮点数规格化表示 (-1)s(1.) 2E-127 e127(e127) 64位双精度浮点数规格化

4、表示 (-1)s (1.) 2E-1023 e1023(e1023),指数真值e 用偏移码形式表示为阶码,规格化表示原则,IEEE 754标准,如何实现规格化? 若M =2,将尾数右移,每右移一位,阶码加1,称为向右规格化右规; 若M 1,将尾数左移,每左移一位,阶码减1,称为向左规格化左规。 注意:尾数为零的浮点数不能规格化。 规格化浮点数的表数范围,E1E2Em,Es,M1M2Mn,Ms,-(2m-1),2,2 (2-2-n),(2m-1),=N =,真值0的机器数(机器零) 阶码E0,尾数M0 正0:S0,负0:S1 规格化浮点数:阶码E1254(11111110) 无穷大的机器数 阶码

5、E全1(11111111) ,尾数M0 :S0,:S1,IEEE 754标准,32位单精度浮点数,E1(0000 0001)254(1111 1110) e-126+127 表达的数据范围(绝对值): 最小值: e-126,M0(1.M1) 十进制表达:2-1261.1810-38 最大值: e127,M111(23个1) 1.M1.111 (23个1) 22-23 十进制表达:(22-23)2127 221273.401038,32位单精度规格化浮点数,IEEE 754标准,E12046 e-1022+1023 表达的数据范围(绝对值) : 最小值: e-1022,M0(1.M1) 十进制表

6、达:2-10222.2310-308 最大值: e1023,M111(52个1) 1.M1.111 (52个1) 22-52 十进制表达:(22-52)21023 221023 1.7910308,64位双精度规格化浮点数,IEEE 754标准,(3)浮点数表示的优缺点 优点:表数范围宽,运算精度高。 缺点:运算复杂,硬件复杂。, X(-1)s1.M2e (1.011011)23 1011.011(11.375)10, 指数e阶码127 1000 001001111111 00000011=(3)10, 包括隐藏位1的尾数1.M 1.011011,例1:浮点机器数 (41360000)16,求

7、真值,例2:真值20.59375,求32位单精度浮点数, 分别将整数和分数部分转换成二进制数 20.5937510100.10011, 移动小数点,使其在第1、2位之间,10100.100111.01001001124,e4,S0,E4+12713110000011,M010010011, 得到32位浮点数的二进制存储格式为:,0 100 0001 1010 0100 1100 0000 0000 0000 (41A4C000)16,2.6 浮点运算 2.6.1 浮点加、减法, 两个二进制浮点数X和Y可以表示为: X=Mx*2E x , Y=My*2E y , 浮点数X和Y加减法运算的规则,

8、XY的结果表示为Mb*2Eb。, 浮点数X和Y是按规格化数存放的,它们运算后的结果也应该是规格化的。, 考查十进制数的加法运算, 123*102+456*103=12.3*103+456*103, =(12.3+456)*103=468.3*103, 推论浮点数X和Y加减法运算的规则为:, X-Y= ( Mx*2E x- E y - My)*2 E y,, X+Y= ( Mx*2E x- E y + My)*2 E y, 不失一般性,设E xE y, 计算机中实现X和Y加、减法运算的步骤为:,第1步:0操作数处理,浮点加减运算过程比定点运算过程复杂 如果判知两个操作数或中有一个数为0,即可得知

9、运算结果而没有必要再进行后续的一系列操作以节省运算时间。 0操作数检查步骤则用来完成这一功能。,第2步:对阶, 阶码的比较通过两阶码的减法来实现,对阶使得原数中较大的阶码成为两数的公共阶码;, 小阶码的尾数按两阶码的差值决定右移的数量。, 两阶码的差值表示为:E= E x- E y, 若E0,则E b E y,E x E y,Mx Mx*2E x- E y, 若E0,则E b E x,E y E x,My My*2E y- E x, 小阶码的尾数右移时应注意:, 原码形式的尾数右移时,符号位不参加移位,数值位右移,空出位补0。, 尾数的右移,使得尾数中原来|E |位有效位移出。, 补码形式的尾

10、数右移时,符号位与数值位一起右移,空出位填补符号位的值。, 移出的这些位不要丢掉,应保留,并且参加后续运算。这对运算结果的精确度有一定影响。, 保留的多余的位数称为保留位。,第3步:尾数加减, 对尾数进行加、减运算 MbMx My,第4步:尾数规格化, 设浮点数的尾数用补码表示,且加、减运算时采用双符号位,则规格化形式的尾数应是如下形式:, 尾数为正数时:001xxx, 尾数为负数时:110 xxx, 尾数违反规格化的情况有以下两种可能:, 尾数加、减法运算中产生溢出 正溢出时,符号位为01, 尾数的绝对值小于二进制的0.1。补码形式的尾数表现为最高数值位与符号位同值。, 规格化采取的方法是:

11、 尾数右移一位,阶码加1;这种规格化称为右规。 表示为:MbMb*2-1,EbEb+1。, 负溢出时,符号位为10, 尾数为正数时:00 00-01x-x,K个0,符号位 数值位, 尾数为负数时:11 11-10 x-x,K个1,符号位 数值位, 采取规格化的方法: 符号位不动,数值位逐次左移,阶码逐次减1,直到满足规格化形式的尾数,即最高数值位与符号位不同值为止。, 这种规格化称为左规。 表示为:MbMb*2k,EbEb-k,总结: 当两数加减运算后尾数结果为00.0XXXX或11.1XX时,进行左规(尾数左移)。左规可能需要进行多次,尾数每左移1位,阶码相应减1,直至规格化。 当两数加减运

12、算后尾数结果为10.XXXX或01.XX时,进行右规(尾数右移)。右规只需要进行1次,尾数每右移1位,阶码相应加1。,第5步:尾数的舍入处理, 对结果尾数进行舍入处理方法, 0舍1入法, 保留位中的最高位为1时,就在尾数末尾加1;, 恒置1法, 不论保留位为何值,尾数的有效最低位恒置1。, 保留位中的最高位为0时,舍去所有的保留位;, 这种方法的最大误差为2-(n+1),n为有效尾数位数。, 恒置1法产生的最大误差为2-n,n为有效尾数位数。, 无论保留位的值是多少,都舍去。, 恒舍法, 上述几种简单的舍入方法对原码形式的尾数进行舍入处理,舍入的效果与真值舍入的效果是一致的。, 称为趋向零舍入

13、(Round toward zero)。, 对于补码形式的负的尾数来说,所进行的舍入处理将与真值的舍入效果可能不一致。, 尾数的结果就取其有效的n位的值。,IEEE754标准的舍入处理,就近舍入 就是通常所说的“四舍五入” 多余位:10010 向最低有效位进位 多余位:01111 截尾 多余位:10000 最低有效位为0:截尾;最低有效位为1,进位 朝0舍入 朝数轴原点方向舍入(截尾) 朝舍入 对正数,只要多余位不全为0,则向最低有效位进1;对负数,则是截尾 朝舍入 对正数,截尾;对负数,只要多余位不全为0,则向最低有效位进1,例题:真值0.2,求32位单精度浮点数, 移动小数点,使其在第1、

14、2位之间,S0,e-3,E-3+12712401111100,M10011001100110011001100110011, 得到32位浮点数的二进制存储格式为:,0011 1110 0100 1100 1100 1100 1100 1101 (3E4CCCCD)16,23位,如何舍入,就近舍入,例1:已知有X= - 0.101010, X补=1010110, 有效小数位数为4位, X补=10110 (入),此时,对应的X= - 0.1010, 对负数的补码来说,执行0舍处理使得原值变大,1入处理反而使得原值变小。, 分别对X和X补采用0舍1入法 进行舍入处理;可得: X= - 0.1011

15、(入),第6步:溢出处理,阶码上溢:机器浮点数值大于最大正数A值(正上溢),或小于最小负数B值(负上溢) 认为是或(阶码E为全1)置溢出标志。 阶码下溢:机器浮点数值小于最小正数a值(正下溢) ,或大于最大负数b值(负下溢) 置结果为机器零。 (阶码E为0),尾数上溢:两个同符号尾数相加产生最高位向上的进位,尾数右移,阶码增1重新对齐。 尾数下溢:在将尾数右移时,尾数的最低有效位从尾数域右端流出,要进行舍入处理。, 浮点数加、减法运算正常结束,浮点数加、减法运算结果为Mb*2E b。,图1 浮点数加减法运算流程图,例2:已知 X=0.11011011*2010, Y=-0.10101100*2

16、100;, 用补码来表示浮点数的尾数和阶码, X浮=00 010,0.11011011, Y浮=00 100,1.01010100,阶符 阶码 尾数, X+Y浮= Mb*2E b,执行X+Y浮的过程如下:, 对阶, E= E x- E y=00 010+11 100=11 110, 即E= -2,Mx右移两位,Mx =0 00110110(11), E b= E y =00 100,保留位,X浮=00 100,0.00110110, 尾数加法, M b= M x+ M y,00 00110110 11,+11 01010100,11 10001010 11, 因此M b=11 10001010

17、 11,保留位, 尾数规格化, 尾数没有溢出,但符号位与最高数值位有K=1位相同,需左规:, M b左移K=1位: M b =11 00010101 1, E b减1: E b =00 011, 舍入处理, 采用0舍1入法,根据负数补码舍入规则,执行舍入操作。, 得: M b =11 00010110, 阶码溢出判断, 阶码无溢出,X+Y正常结束,得:, X+Y 浮= 00 011,1.00010110, 即X+Y= -0.11101010*2011,2.6.2 浮点乘、除法运算, 对浮点数的乘、除法运算来说,免去对阶这一步;两者对结果的后处理是一样的。, 包括结果数据规格化、舍入处理和阶码判

18、断。, 对两个规格化的浮点数X=Mx*2E x , Y=My*2E y ,实现乘、除法运算的规则如下:, X*Y= (Mx*2E x )*(My*2E y) =(Mx* My ) *2E x+ E y, X/Y= (Mx*2E x )/(My*2E y) =(Mx/ My ) *2E x- E y, 浮点数的乘法和除法的运算步骤,1浮点数乘法的运算步骤,(1)两浮点数相乘, 两浮点数相乘,乘积的阶码为相乘两数的阶码之和,尾数为相乘两数之积。可以表示为:, Mb= Mx* My Eb= E x+ E y,(2)尾数规格化, Mx和 My都是绝对值大于或等于0.1的二进制小数,因此,两数乘积Mx*

19、 My的绝对值是大于或等于0.01的二进制小数。, 不可能溢出,不需要右规。对于左规来说,最多一位,即Mb最多左移一位,阶码Eb减1。,(3)尾数舍入处理, Mx* My产生双字长乘积,如果只要求得到单字长结果,那么低位乘积就当作保留位进行结果舍入处理。, 若要求结果保留双字长乘积,就不需要舍入处理了。,(4)阶码溢出判断, 对Eb的溢出判断完全相同于浮点数加、减法的相应操作。,例3 已知 x=0.11000010101,y=-0.11100010100,设阶码数值部分各取5位,阶符2位;尾数数值部分各取6位,尾符2位,按机器浮点数运算步骤, 求xy。 解 : (1) 求阶和 Ex补=00 0

20、0101 Ey补=00 00100 E补=Ex补 + Ey补 = 00 01001 (2) 尾数相乘 可利用原码或补码定点数乘法求尾数之乘积,得 SxSy原 = 1.101010000000 或 SxSy补 = 1.010110000000,(3) 规格化 SxSy原或SxSy补已是规格化形式,勿需规格化。 (4) 舍入 若取单字长乘积,可得SxSy原=1.101010或SxSy补=1.010110,所以 xy原=1.101010100001001 xy补=1.010110100001001 得 xy = -0.101010101001= -101010000,图2 浮点数乘法运算流程图,3. 浮点数除法的运算步骤,(1)除数是否为0,若My =0,出错报告。,(2)两浮点数相除, 两浮点数相除,商的阶码为被除数的阶码减去除数的阶码。商的尾数为相除两数的尾数之商。, 可以表示为: Mb= Mx/ My ,Eb= E x- E y,(3)尾数规格化, Mx和 My都是绝对值大于或等于0.1的二进制小数,因此,两数相除Mx/ My的绝对值是大于或等于0.1且小于1.0 的二进制小数。所以,对Mb不需要左规操作。, 若溢出,执行右规:Mb右移一位,阶码Eb加1。,(4)尾数舍入处理,(5)阶码溢出判

温馨提示

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

最新文档

评论

0/150

提交评论