- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* ,为此需对算法加以改进。 * * * * * * * * * * * * * * * * * * * * * * * * 前一种方式依然需要较多的运算时间。 前一种方法所需时间仍然较多,随着大规模集成电路技术的发展带来的硬件成本的降低。 * 黑板手算,并前面补足零,并引出问题 * ,为此需对算法加以改进。 * ,为此需对算法加以改进。 * 由于乘积符号单独处理,所以乘法运算中实际是两数绝对值相乘或者说是两个正数相乘。 * * * * * * * ,为此需对算法加以改进。 * * 4.舍入 为减少对阶和向右规格化时,因尾数右移而造成的误差,可进行舍入处理。 舍入的原则: ⑴ 误差不超过所允许的范围,一般要求不超过最低位的1。 ⑵ 误差应有正有负,不会产生积累误差。 * * (1) 恒舍法 恒舍法也称截断法 将丢掉的部分一律舍去,保留的部分不作任何改变。 这种方法简单,但精度较低。 * * (2) 0舍1入法 若右移时被丢掉数位的最高位为0,则舍去; 若右移时被丢掉数位的最高位为1,则将1加到尾数的最低位。 这种方法精度较高,但在加1时,会产生进位,使运算速度减慢。 * * (3) 末位恒置1法 只要右移丢失数据,就将尾数的最低位恒置为1,而不管原来是0还是1。 这种方法简单,且没有积累误差,是常用的舍入方法。 * * (4) ROM舍入法(查表舍入法) 根据尾数的低K位的代码值及被丢掉数位的最高位值,按一定舍入规则,编制成舍入表,并把它存放在只读存储器中。当需要舍入操作时,以尾数低K位及被丢掉数位的最高位作为ROM地址,通过查舍入表,得到舍入后尾数低K位值。 舍入表编制原则是:若尾数低K位值不为全1,则按0舍1入法编制;若尾数低K位值为全1,则按截断法编制。 这种方法既具有0舍1入法的优点,又可以避免0舍1入法中的进位传送。 * * 原K位 最高丢失位 舍入后K位 00 0 00 00 1 01 01 0 01 01 1 10 10 0 10 10 1 11 11 0 11 11 1 11 * * (5)设保护位(guard bit)法 在尾数后面设若干位保护位,运算时保护位与尾数一起参加运算和移位。运算结果根据保护位的值决定舍入。 如DG MV系列机中,双精度浮点数尾数有56位,8位保护位,共64位运算,其舍入规则为: 若保护位值为00H~7FH(0XXXXXXX),则采用截断法; 若保护位值为80H,则尾数最低位加到尾数最低位上; 若保护位值为81H~FFH(1XXXXXXX),则尾数最低位上加1。 这种方法可使误差小于尾数最低位的1/2。 尾数 保护位 * * 例:设浮点数的阶码为4位,尾数为6位,阶码和尾数均采用补码表示; 下列数据x、y中的指数和小数部分均为二进制真值。 ⑴ x=2001×0.1101,y=2011×(-0.1010),求x+y=? ⑵ x=2-010×(-0.1111),y=2-100×0.1110,求x-y=?1位 4位 5位 数符 阶码 尾数 * * (1) 求x+y=? x的浮点表示为:[x]补=0 0001 11010 y的浮点表示为:[y]补=1 0011 01100 ①对阶:x阶-y阶 =0001+1101=1110,真值为-010,即x的阶码比y的阶码小2。将小阶向大阶对齐,x的尾数右移2位,阶码加2,得: [x]补= 0 0011 00111 (0舍1入) ②尾数相加: 0.00111+1.01100=1.1001100.00111 + 11.0110011.10011 * * ③结果规格化: 因为结果1.100101为非规格化数,所以应向左规格化,即尾数左移1位,阶码减1。规格化的结果: [x+y]补=1 0010 00110 (0舍1入) x+y=210×(-0.11010) * * (2) 求x-y=? x的浮点表示为:[x]补= 1 1110 00010 y的浮点表示为:[y]补= 0 1100 11100 -y的浮点表示为:[-y]补= 1 1100 00100 ①对阶:x阶-y阶 =1110+0100=0010,真值为010,即x的阶码比y的阶码大2。将小阶向大阶对齐,-y的尾数右移2位,阶码加2,得: [-y]补= 1 1110 11001 (0舍1入) * * ②尾数相减:即[x]补+[-y]补 1.00010+1.11001=1.1001111.00010 + 11.1100110.11011 ③结果规格化: 因为结果发生溢出,10.11011为非规格化数,所以应向右规格化,即尾数右移1位,阶码加1。规格化的结果: [x-y]补= 1 1111 01110(0舍1入) x-y=2-001×(-0.10010)
原创力文档


文档评论(0)