- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浮点数的四则运算
2.7 浮点数的四则运算 主要内容: 浮点加减运算 浮点乘除运算 2.7.1 浮点加减运算 1、对阶 ■ 规则:小阶对大阶。 原因:舍去尾数低位,产生误差;若丢失尾数高位,必然导致错误。 ■ 方法:求阶差。 阶差=0,不需对阶; 阶差≠0,小阶码数的尾数右移,右移次数为阶差的绝对值,其阶码加上阶差的绝对值。 ■ 例题 2、 尾数求和(差) 完成对阶后,按定点小数补码加减法运算规则求两数和(差)。一般采用变形补码。例题 浮点加减运算(续) 3、结果规格化和判溢出 如果尾数采用双符号位的补码表示,则正数规格化形式为00.1××…×,负数规格化形式为11.0××…×。 规格化处理规则是: 当结果尾数出现01.××…×或10.××…×时,需右移一位,并使阶码加1,这个过程称为右移规格化,简称右规。 当结果尾数出现00.0××…×或11.1××…×时,需要进行左移规格化处理,简称左规。左规时尾数左移一位,阶码减1。 浮点加减运算(续) 右规和对阶操作时尾数右移,需要进行舍入处理。 计算机中的舍入方法: 截断法: 将移出的数据一律舍去。该方法简单,但影响精度; 0舍1入法: 移掉的是1,则尾数末位加1,移掉的是0,则不加。 末位恒置1法: 将欲保留的末位数据恒置1,无论右移掉的是1还是0,也无论此时末位是1还是0。 例题 例 例:若X=0.110101×2+01,Y=-0.101010×2+10,求X+Y,X-Y的浮点数。设其浮点数格式为:阶码4位,双符号、补码表示;尾数8位,双符号、补码表示。 解:先将两浮点数表示为规格化的浮点数: [X]浮=00 01;00 110101 [Y]浮=00 10;11 010110 1)对阶 求阶差△E=0001补-0010补=1111补=-1 ExEy,按小阶对大阶原则,X的尾数右移1位,阶码加1,尾数舍入采用末位恒置1法,则: [X]浮=00 10;00 011011 2)尾数求和(差) 3)结果规格化及判溢 X+Y的结果是非规格化的数,需左规。因此将结果尾数左移两 位,阶码减2,得 [X+Y]浮=0000 阶码未超出-Emax,∴无下溢 X-Y的结果需要右规,将尾数右移1位,阶码加1,得:[X-Y]浮=0011阶码未超出+Emax,∴未溢出 4)舍入 由于X+Y是左规,结果不需要舍入; X-Y为右规,若采用末位恒置1法,则 [X-Y]浮=0011 若采用0舍1入法,则结果相同。 2.7.2 浮点乘除运算 阶码一般用补码或者移码表示。 若阶码用移码表示,则根据移码的定义可知: [Ex]移 + [Ey]移 = 2n + Ex + 2n + Ey = 2n + (2n + Ex + Ey) = 2n + [Ex + Ey]移 若直接用移码求阶码之和,结果比两数之和的移码多了2n,即最高位上多加了一个1. 所以,要求两数和的移码,必须将两数移码之和的最高位(符号位)取反。 例 已知 [Ex]移=10010,[Ey]移=01000,求[Ex+Ey]移。 解:因为[Ex]移+ [Ey]移= 10010+01000=11010 将符号位取反得:[Ex+Ey]移=01010 例 已知 [Ex]移=00110,[Ey]移=11011,求[Ex+Ey]移。 解:因为[Ex]移 + [Ey]移 = 00110+11011=00001 将符号位取反得:[Ex+Ey]移=10001 由于补码和移码的数值位相同,符号位相反,因此可以将移码和补码混合使用,即利用X的移码和Y的补码之和来表示X+Y的移码。 [Ex]移 + [Ey]补 =2n+ Ex + 2n+1 + Ey =2n+1 + (2n + (Ex + Ey)) = 2n+1 + (Ex + Ey)移 = [Ex + Ey ]移(mod 2n+1 ) 同理: [Ex]移 + [-Ey]补 = [Ex-Ey ]移(mod 2n+1 ) 采用双符号位进行运算。 设移码的双符号位为Sf1 Sf2,并规定运算初始时,移码的第一符号位Sf1 恒用0表示(与双符号位补码不同)。 移码加减运算的溢出判断方法是: Sf1 Sf2=00,结果为负,无溢出; Sf1 Sf2=01,结果为正,无溢出; S
文档评论(0)