使用减法导致ieee-754浮点格式的下溢

时间:2013-09-27 14:46:57

标签: floating-point floating-accuracy ieee-754 floating-point-precision underflow

这似乎很基本,但我在回答以下问题时遇到了很多麻烦:

给出以IEEE754格式表示的两个数字X和Y,这样计算X-Y将导致下溢。

据我所知,每次操作都可能导致下溢,但对于我的生命,我无法找到减法的例子。

请帮助!!! 感谢

2 个答案:

答案 0 :(得分:4)

当默认异常处理生效时,产生微小(在子正常区间 1 中)非零结果的减法在概念上会导致下溢异常,但没有可观察到的影响,因为:

  • 由于浮点格式的特性,产生微小结果的减法必然是精确的(没有有效位低于低于正常值的位,并且与乘法不同,减法在数学上不能有任何低位而不是在输入中。)
  • IEEE 754-2008标准规定,当存在具有默认异常处理的下溢且结果准确时,不会引发任何标志(包括下溢标志)。并且,由于默认异常处理有效,因此没有陷阱(程序控制的异常更改)。

对于家庭作业,您可以执行具有微小结果的减法并合法地声称发生了下溢异常,即使没有引发标记且没有发生陷阱。

要创建下溢异常的可观察效果,​​您需要将下溢异常的处理从默认值更改为其他内容,例如在发生下溢时启用陷阱。这样做的手段取决于语言。


1 在32位二进制格式中,如果数量小于2 -126 ,则数字很小。在64位格式中,如果数量小于2 -1023 ,则数字很小。 IEEE 754标准允许在结果舍入到正常有效长度之前或之后确定细微度。

答案 1 :(得分:1)

我看到在减法上获得下溢的唯一可能性是禁用非规范化数字。如果你能做到这一点,会有成对的不同双打,其差异太小而不能表示为非零双。