浮点数运算.doc_第1页
浮点数运算.doc_第2页
浮点数运算.doc_第3页
浮点数运算.doc_第4页
浮点数运算.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

5、浮点数运算 假定有两个浮点数 X=Mx * 2Ex , Y=My * 2Ey (1)加减运算实现XY运算,需要如下五步:1.1 对阶操作,即比较两个浮点数的阶码值的大小.求E=Ex-Ey。当其不等于零时,首先应使两个数取相同的阶码值。其实现方法是,将原来阶码小的数的尾数右移|E|位,其阶码值加上|E|,即每右移一次尾数要使阶码加1,则该浮点数的值不变(但精度变差了)。尾数右移时,对原码形式的尾数,符号位不参加移位,尾数高位补0;对补码形式的尾数,符号位要参加右移并使自己保持不变。为减少误差,可用另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。1.2 实现尾数的加(减)运算,对两个完成对阶后的浮点数执行求和(差)操作。1.3 规格化处理,若得到的结果不满足规格化规则,就必须把它变成规格化的数,规格化处理规则如下:l 当结果尾数的两个符号位的值不同时,表明尾数运算结果溢出。此时应 使结果尾数右移一位,并使阶码的值加1,这被称为向右规格化,简称右规。l 当尾数的运算结果不溢出,但最高数值位与符号位同值,表明不满足规格化规则,此时应重复地使尾数左移、阶减减1,直到出现在最高数值位上的值与符号位的值不同为止,这是向左规格化的操作,简称左规。1.4 舍入操作。在执行对阶或右规操作时,会使尾数低位上的一位或多位的数值被移掉,使数值的精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。舍入的总的原则是要有舍有入,而且尽量使舍和入的机会均等,以防止误差积累。常用的办法有0舍1入法,即移掉的最高位为1时 则在尾数末位加1;为0时则舍去移掉的数值。该方案的最大误差为2-(n+1)。这样做可能又使尾数溢出,此时就要再做一次右规。另一种方法 置1法,即右移时,丢掉移出的原低位上的值,并把结果的最低位置成1。该方案同样有使结果尾数变大或变小两种可能。即舍入前尾数最低位已为0,使其变1,对正数而言,其值变大,等于最低位入了个1。若尾数最低位已为1,则再对其置1无实际效用,等于舍掉了丢失的尾数低位值。1.5 判结果的正确性,即检查阶码是否溢出。浮点数的溢出是以其阶码溢出表现出来的。在加减运算真正结束前,要检查是否产生了溢出,若阶码正常,加(减)运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零,若上溢,则置溢出标志。例15:某浮点数阶码6位(含1位符号位:阶符),补码表示,尾数10位(含1位符号位,数符),补码表示, X=2010B * 0.11011011B, Y=2100B * (-0.10101100B),求 X+Y解: 由已知条件,Ex=+010B,Mx = 0.11011011 B, Ey=+100B,My =-0.10101100 B 对应补码分别为Ex补=+010B 补=+00010B 补=000010BMx补= +0.11011011 B补=0.110110110 B 补=0, 110110110 BEy补=+100B 补=+00100B 补=000100B-Ey补=111100BMy补= -0.10101100 B补=-0.101011000 B 补=1, 010101000 B 浮点表示分别为:数符 阶码 尾数数值 X浮 = 0 000010 110110110Y浮 = 1 000100 01010100015_(1)对阶 E补= Ex补+-Ey补= 00 00010B + 11 11100B = 11 11110BE =-00010B=-2,说明X的阶码小,应使Mx右移两位,Ex加2所以修正X浮 = 0 000100 001101101 1015_(2)尾数求和00 001101101 10+ 11 010101000 11 100010101 1015_(3)尾数规格化 尾数运算结果的符号位与最高数值位均为1,应执行左规处理,具体为:将尾数左移一位,符号位1位,结果为1000101011, 阶码减1变为000011。15_(4)尾数移出位的舍入处理 左规已将对阶移出的1位有效1移入,尾数不用做舍入处理。15_(5)判溢出,写结果尾数已规格化且阶码符号位为00,没有溢出,最终结果为 Ex+y补=000011 Ex+y=+00011B Mx+y补=1000101011 Mx+y=-0.111010101B 所以,X+Y = 2+0011B *(-0.111010101B)(2)乘法运算实现X*Y运算,需要如下三步:2.1 尾数相乘(两个定点小数相乘)2.2 阶码求和2.3 结果左规、舍入例16:某浮点数阶码3位(含1位符号位:阶符),补码表示,尾数3位(含1位符号位,数符),原码表示, X=210B * 0.1101B, Y=2-01B * (-0.1011B),求 X*Y 解:由已知条件,Ex=+10B,Mx = 0.1101 B, Ey=-01B,My =-0.1011 B 对应机器数分别为:Ex补=+10B补=010BMx原= +0.1101 B原=0, 1101 BEy补=-01B补=111BMy原= -0.1011B原=1, 1011B 机内浮点表示分别为:数符 阶码 尾数数值 X浮 = 0 010 1101Y浮 = 1 111 101116_(1)尾数相乘(Mx* My) 1.1 | Mx | 原= +0.1101 B原=0, 1101 B|My | 原= +0.1011B原=0, 1011B 1.2 高 位 积 乘数/低位积Y0 00 0000 1 0 1 1+ Y0*|X| 补 00 1101 00 1101 右移 00 0110 1 1 0 1 + Y0*|X| 补 00 1101 01 0011右移 00 1001 1 1 1 0+ Y0*|X| 补 00 0000 00 1001 右移 00 0100 1 1 1 1+ Y0*|X| 补 00 1101 01 0001右移 00 1000 1 1 1 1 1.3 Mx * My 符号= Mx 符号My符号=01=11.4 Mx * My 原=1,100011110B16_(2)阶码求和00 10+ 11 11 00 0116_(3)结果左规、舍入 尾数已为规格化形式,由于数值部分职能保存4位,需对小数点后第5位进行0设1入,最终尾数原码为1,1001B 最终运算结果为:1 001 1001 所以,X*Y = 2+01B *(-0.1001B)(3)除法运算实现X/Y运算,需要如下三步:3.1 尾数相除(两个定点小数相除)3.2 阶码相减3.3 结果规格化及舍入例17:某浮点数阶码3位(含1位符号位:阶符),补码表示,尾数3位(含1位符号位,数符),原码表示, X=210B * 0.0011B, Y=2-01B * 0.1011B,求 X/Y 解:由已知条件,Ex=+10B,Mx = 0.0011 B, Ey=-01B,My =-0.1011 B 对应机器数分别为Ex补=+10B补=010BMx原= +0.0011 B原=0, 0011BEy补=-01B补=111BMy原= -0.1011B原=1, 1011B机内浮点表示分别为:数符 阶码 尾数数值 X浮 = 0 010 0011Y浮 = 1 111 101117_(1)尾数相除(Mx/ My) 1.1 | Mx | 原= +0.00110000 B原=0, 00110000 B|My | 原= +0.1011B原=0, 1011B-|My | 补= 1, 0101B 1.2 被除数高位/余数 被除数低位/商00 0011 00000 +-|My |补 11 0101 11 1100 00000 左移 11 1000 00000+ |My |补 00 1011 00 0011 00001左移 00 0110 00010+-|My |补 11 0101 11 1011 00010左移 11 0110 00100+|My |补 00 1011 00 0001 00101左移 00 0010 01010+-|My |补 11 0101 11 0111 01010+|My |补 00 1011 00 0010 1

温馨提示

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

评论

0/150

提交评论