IEEE 754浮点加/舍入

时间:2011-10-02 09:42:43

标签: math ieee-754

我不明白如何添加IEEE 754浮点(主要是指数的“重新对齐”)

对于四舍五入,Guard,Round&粘性发挥作用?一般如何舍入(基础2浮点数)

  

例如。假设qn:添加IEEE 754 Float以十六进制0x383FFBAD表示   和0x3FD0ECCD,然后给Round回答0,\ $ \ pm \ infty \ $,   最近的

所以我有

0x383FFBAD        0 | 0111 0000 | 0111 1111 1111 0111 0101 1010
0x3FD0ECCD        0 | 0111 1111 | 1010 0001 1101 1001 1001 1010

那我该怎么办?如果您愿意,请随意使用其他示例

1 个答案:

答案 0 :(得分:2)

如果我正确理解了 “重新对齐”指数 ......

Here解释了格式与实际价值的关系。

1.b(22)b(21)... b(0)* 2 e-127 可以解释为由e-127位位置左移的二进制整数。当然,移位量可以是负数,这就是我们获得分数(值在0和1之间)的方式。

为了添加2个相同符号的浮点数,您需要首先使它们的指数部分相等,或者换句话说,对其中一个加数(具有较小指数的那个)进行非规范化。

原因很简单。例如,当您添加1和1时,您想要添加数十,数百和数百等等。因此,您有1.000 * 10 3 + 1.000 * 10 0 = 1.000 * 10 3 + 0.001 * 10 3 (< - 非正规化)= 1.001 * 10 3 。当然,这可能导致截断/舍入,如果格式不能准确地表示结果(例如,如果它只能有2位有效数字,那么最终会得到相同的1.0 * 10 3 总和)。

因此,就像上面的示例1000和1一样,在添加尾数之前,您可能需要转移到正确的加数之一。你需要记住格式中有一个隐含的1.位,它不存储在浮点数中,你必须在移位和添加时考虑到这一点。添加尾数后,你很可能会遇到尾数溢出,并且必须再次非规范化以消除溢出。

这是基础知识。还有一些特殊情况需要考虑。