9

我还没有在网络上的任何地方找到一个很好的解释,所以我希望这里有人可以为我解释。

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

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。

4

1 回答 1

8

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

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

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

圆位是尾数 o 位之后的第二位。此处的保护位为 1,而循环位为零,因为不存在其他位。

粘性位也为零,因为圆形位的右侧没有任何位。因此我们有 GRS 或 100。

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

于 2015-03-27T00:42:22.020 回答