我不明白如何添加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
那我该怎么办?如果您愿意,请随意使用其他示例
答案 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.
位,它不存储在浮点数中,你必须在移位和添加时考虑到这一点。添加尾数后,你很可能会遇到尾数溢出,并且必须再次非规范化以消除溢出。
这是基础知识。还有一些特殊情况需要考虑。