浮点NaN有效载荷有什么用?

时间:2015-11-28 04:47:33

标签: floating-point nan ieee-754

我知道IEEE 754定义NaN具有以下按位表示:

  • 符号位可以是01
  • 指数字段包含所有1
  • 尾数的某些位用于指定它是否是一个安静的NaN或信号NaN
  • 尾数不能是所有0位,因为该位模式是为表示无穷大而保留的
  • 尾数的其余位形成有效载荷

当计算输入为NaN时,有效载荷会传播(就像整个NaN一样)到浮点计算的结果,尽管我不知道此传播的细节或标准是否指定了这个完成了。谁设置原始有效载荷?如果我添加两个具有不同有效负载的NaN会发生什么?

但最重要的是:我以前从未见过NaN有效载荷。这个有效载荷字段有什么用途?

3 个答案:

答案 0 :(得分:6)

当开发出IEEE 754和NaN时,人们认为这是一个好主意。我实际上已经看到它用于存储创建NaN的原因。

今天,由于多种原因,我不会在便携式代码中使用它。你有多确定这个有效载荷能否继续存在,例如作业?如果你指定x = y,你有多确定x具有与y相同的NaN有效载荷?你有多确定它会在算术中存活下来?如果a或b是NaN,那么op b应该是一个NaN,或者如果它们都是NaN则是两个NaN中的一个。当然是这样的吗?我不愿意赌它。

答案 1 :(得分:5)

答案 2 :(得分:0)

统计环境R使用NaN负载来区分一个特定的NaN,以表示一个统计“缺失值”,其打印为NA。这允许“缺失”通过数值计算传播-尽管将缺失值与另一个NaN组合时,无法预测会传播哪个。