浮点数运算中的舍入问题

您所在的位置:网站首页 尾数法怎么用 浮点数运算中的舍入问题

浮点数运算中的舍入问题

2024-02-22 12:06| 来源: 网络整理| 查看: 265

前面讲到了浮点数计算时候的步骤:对阶,尾数求和,规格化。没有细细研究舍入的问题。

需要提出的是,阶码是小的向大的看齐,因此尾数求和阶段只有右移,没有左移。在规格化阶段,尾数超过加和溢出,需要右移。高位不是1的时候就左移。 左移,阶码要-1,右移,阶码要+1. 我以为自己懂了,但是真的遇到问题,才发现有一处不明,导致全盘皆不明。

书上提供了两种舍入的方法,一种是0舍1入法,一种是恒置1法。

具体解释是这样。

0舍1入法:尾数右移时,被移去的最高位数值为0,则舍去;被移去的最高位数值为1,则在末位加1.这样可能导致尾数溢出,因此还需要再右归。

我难以理解这个概念:什么是被移去的最高位?惶恐不安许久,终于明白,原来指的是:右移的时候,低位将被舍弃,因为位置有限,既然是右移,自然最右边的数位先丢掉。 假设补码表示。规则是左0右1,即:左移低位补0,右移高位补1. 1.01010101右移一次,被丢弃的位是1,这个时候被遗弃的最高位是谁?当然是1,因为只有一位。根据0舍1入的规则,尾数末尾需要加1. 保存的数位是:1.10101010 + 0.00000001 = 1.10101011 再右移一次,被丢弃的数位就有两位了,11。这个时候最高位就是1,所以,本次右移仍然需要在尾数最末尾加1.

需要额外说明的是,做高位一般多是指左边的位置。

也许这对你来说,根本不必加以总结,但是对我而言,我困惑了一段时间,所以,特别提出来,希望对你也有一点点价值。

恒置1法就不用说了,每一次右移,都在尾数的末尾加1.

还有,这里不知道你有没有体会到,右移,是一次一次进行。比如要右移三次,那么就有可能尾数加了三次1. 而不是看一下移动三位,最高位是1才加一个1. 如果这个理解出粗,我会回来修正的。

以上。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3