二进制加法IEEE格式

时间:2016-03-03 17:10:00

标签: floating-point precision scientific-computing

我试图理解单精度IEEE格式的二进制加法。

例如,考虑案例

  

|Name |ExemptionStatus |Total Value| |X |2 |100 | |X |3 |200 |

如何添加它们?我应该首先将它们转换为十进制到10的功率吗?但是我再次获得9位数,因为计算机可以代表7位数,我该如何摆脱其他两位数呢?然后将如何添加?任何阅读材料也都非常有用。

1 个答案:

答案 0 :(得分:0)

找一个解释数据格式的好消息来源。

从两个数字中提取一位符号,8位指数和23位存储的尾数。

如果任何指数是0xff,那么该数字是NaN(如果存储的尾数是非零)或无穷大(如果存储的尾数是0)。查看在涉及Infinity和NaN的所有情况下您应该返回的结果并返回该结果。完成。

除非指数为0(零或非规范化数),否则在尾数的位置23添加隐式前导1位,为您提供正确的24位尾数。

比较指数。将具有较小尾数的数字向右移动正确的位数,但跟踪已移出的所有位。

根据符号添加或减去尾数,包括移出的位。

如果尾数和所有移出的位都为零,则结果为+0或-0。检查IEEE规则以找到哪一个。只有(-0)+( - 0)给出-0,其他一切都是+0。完成。

如果设置了尾数的第24位,则将结果向右移动并将指数增加1.

只要尾数的第23位被清除且指数不为零,就将结果向左移动并将指数减1。

如果设置了从尾数中移出的位的最高位,并且如果有更多位移出或尾数的最低位为1则将尾数增加1,如果位24是然后将它向右移1位并增加指数。

如果指数为0xff,则结果为+ Infinity或-Infinity。完成。

否则清除尾数的第23位并将符号,指数和尾数组合成结果。