我正在逻辑仿真器中设计FPU,我需要知道哪种操作会生成两种NaN(安静:qNaN和信令:sNaN)

编辑:我发现像0 * infinity这样的算术运算始终会生成qNaNs(来源:http://www.savrola.com/resources/NaN.html)。但是我仍然不知道的是,除了将变量设置为sNaN的位模式外,是否还有其他方法可以获取sNaN。

最佳答案

我假设您要模拟的任何浮点规范都有某种教科书或规范。在其中查找定义。

对于更一般的内容,您可以阅读:http://en.wikipedia.org/wiki/NaN

维基百科在sNaN上说的是:

信号NaN [编辑]
发出信号的NaN或sNaN是NaN的一种特殊形式,当被大多数操作消耗时,NaN会引发无效的异常,然后在适当的情况下被“静默化”为可能传播的qNaN。它们是在IEEE 754中引入的。关于如何使用它们有一些想法:

如果在初始化之前使用了数据,则用信号NaN填充未初始化的内存将产生无效的异常
使用sNaN作为更复杂对象的占位符,例如:
表示下溢的数字
溢出的数字表示
以更高精度格式的数字
复数http://en.wikipedia.org/wiki/NaN

09-20 17:01