IEEE754 浮点数系统中的 NaN 和 +-INF
Posted
技术标签:
【中文标题】IEEE754 浮点数系统中的 NaN 和 +-INF【英文标题】:NaN and +-INF in floating point number system following IEEE754 【发布时间】:2014-03-01 09:39:46 【问题描述】:在标准中,NaN和INF的表示是这样的:
对于 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的主要内容,如果未能解决你的问题,请参考以下文章