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

Jor*_*elo 10 floating-point nan ieee-754

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

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

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

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

gna*_*729 6

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

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

  • 还应该注意的是,IEEE-754(2008)并没有*要求*NaN有效载荷,它只是*推荐*它们.使用单个规范NaN图案(在SNaN和QNaN香料中)将是标准的.参见标准第6.2节,特别是(强调我的):"为了便于传播NaN中包含的诊断信息,尽可能多的信息*应该保存在NaN操作结果中." (5认同)

小智 5

https://softwareengineering.stackexchange.com/questions/185406/what-is-the-purpose-of-nan-boxing

看一下该链接,了解js引擎如何使用nan boxing。

  • 太有趣了!您能否总结一下答案中链接的信息?完成后,我将准备对其进行投票。 (2认同)