IEEE754 浮点数系统中的 NaN 和 +-INF

Posted

技术标签:

【中文标题】IEEE754 浮点数系统中的 NaN 和 +-INF【英文标题】:NaN and +-INF in floating point number system following IEEE754 【发布时间】:2014-03-01 09:39:46 【问题描述】:

在标准中,NaNINF的表示是这样的:

对于 NaN:指数 = emax+1 & 尾数 != 0;

对于 INF:指数 = emax+1 & 尾数 = 0;

他们有很多方法和计算得出这两个值。

NaN(INF) 究竟是什么?

以及如何系统“决定”或“判断”将价值存储为这一个(两个)?

这可能是一个我觉得很奇怪的案例:

a = b = 1*2(emax);

然后计算c = a+b,实际结果为1*2^(emax+1);

现在,根据标准,c 不是可用的 FP 值;

那么系统如何将c存储到设备中呢?

NaN 吗?

如果是,这怎么可能是合理的?

我的意思是,1*2^(emax+1) 是(应该是)一个数字...在常识中...?

如果是这种情况,那么标准究竟如何看待 NaN 是什么?

如果不是,那我们该如何处理???

我正在考虑这样一个:

令 eM = emax+1;

那么 1d.d...d * 2^(eM-1) = 1d.d...d * 2^(emax)

其中 1d.d...d 具有系统的合法位数。

这实际上是一种处理非规范化数字的方式。


这里的事情是这样的:

判断是后验还是先验计算完成?

如果是前者,上面的可能有问题吗?

另一方面,任务似乎无法完成……

有人想过这个问题吗?

谢谢考虑!!

注意:+-INF 的东西也会出现。

【问题讨论】:

您的所有问题都在en.wikipedia.org/wiki/IEEE_floating_point#Exception_handling 中得到解答。不要花页面思考一个替代方案,然后另一个。它提出了一个无用的冗长问题,完全回答是没有意义的。 【参考方案1】:

来自Wikipedia:

五个可能的例外是:

无效运算(例如,负数的平方根)(默认返回 qNaN)。 除以零(对有限操作数的运算给出精确的无限结果,例如 1/0 或 log(0))(默认返回 ±infinity)。李> 溢出(结果太大而无法正确表示)(默认返回±infinity(用于四舍五入模式)。 下溢(结果非常小(超出正常范围)且不精确)(默认返回非规范化值)。 ...

【讨论】:

以上是关于IEEE754 浮点数系统中的 NaN 和 +-INF的主要内容,如果未能解决你的问题,请参考以下文章

关于IEEE754标准浮点数阶码的移码

浮点数剖析

计算机中的浮点数(IEEE754)

ieee754单精度浮点数 表示方法

IEEE 754 浮点数的表示精度探讨

IEEE754表示浮点数