【发布时间】:2016-03-02 06:30:08
【问题描述】:
我知道 IEEE 754 将 NaN 定义为具有以下按位表示:
- 符号位可以是
0或1 - 指数字段包含所有
1位 - 尾数的某些位用于指定它是安静 NaN 还是信号 NaN
- 尾数不能全部为
0位,因为该位模式保留用于表示无穷大 - 尾数的剩余位构成有效载荷
当计算的输入为 NaN 时,有效载荷(与整个 NaN 一样)传播到浮点计算的结果,尽管我不知道这种传播的细节或标准是否指定如何这个做完了。谁设置了原始有效载荷?如果我添加两个具有不同负载的 NaN,会发生什么?
但最重要的是:我以前从未见过使用过 NaN 有效载荷。这个payload字段有什么用?
【问题讨论】:
-
我听说过使用有效负载来回答为什么首先会生成 NaN。 (
0/0、oo-oo、在极点评估的函数等)我还听说过未经证实的谣言,即至少有一个程序使用(51 位)sNaN 有效负载作为(48 位)指针以进行“回退”到任意精度的算术。 -
规范还定义了何时创建 nan,表示 nans 与安静的 nans。这个想法是,您不必在每次操作后检查是否存在上溢或下溢或除以零或任何您可以查看最终结果并查看计算在某些时候出现问题的内容。
-
是的,刚刚检查过,它列出了正确结果为 NaN 的几种情况。 (不一定是我在上面评论中列出的那些)
标签: floating-point nan ieee-754