【发布时间】: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 中得到解答。不要花页面思考一个替代方案,然后另一个。它提出了一个无用的冗长问题,完全回答是没有意义的。
标签: language-agnostic system ieee-754 floating