添加后舍入浮点数(保护,粘性和圆形位)

时间:2013-10-02 20:21:48

标签: floating-point ieee-754

我还没能在网上的任何地方找到这方面的好解释,所以我希望有人可以帮我解释一下。

我想手工添加两个二进制数:

1.001 2 * 2 2
1.010,0000,0000,0000,0000,0011 2 * 2 1

我可以添加它们没有问题,我在取消规范化第一个数字后,得到以下结果,添加两个,并重新规范化它们。

1.1100,0000,0000,0000,0000,0011 2 * 2 2

问题是,如果不截断或舍入一位,该数字将不适合单精度IEEE 754格式。我的任务要求我们将这个数字放入单精度IEEE 754格式(这也是通常没有问题,我可以轻松做到这一点)。它要求我们首先使用保护,圆形和粘性位,然后在没有这些位的情况下重复。但是,我不确定这些位如何帮助舍入。我会假设如果我没有保护,圆形和粘性位,我会截断最后一个LSB​​。

1 个答案:

答案 0 :(得分:5)

单精度意味着尾数保持23位(假设32位架构),加上隐藏的一位。因此,第一个从尾数中消失。

接下来是确定G和R位或Guard和Round位。

Guard位是尾数0位的两位中的第一位,将被截止。

圆形位是尾数的o位之后的第二位。此处的保护位为1,并且由于不存在其他位,因此舍入位为零。

粘滞位也为零,因为圆位右侧没有。因此我们有GRS或100.

根据所使用的书籍或处理器,这通常意味着舍入到最接近的偶数。在这种情况下,由于LSB(最低有效位)为1,因此尾数的数字将向上舍入为1100,0000,0000,0000,0000,010。