English 中文(简体)
inf和NaN的内部表示是什么?
原标题:
  • 时间:2009-03-12 19:16:53
  •  标签:

我和朋友在午餐期间辩论如何存储Inf和NaN值。

以Fortran 90为例。4字节实数可以获得Inf或NaN的值。这是如何在内部存储的?据推测,4字节实数是一个由32位二进制数字表示的数字。Inf和NaN是否存储为33位二进制数字?

最佳回答

具体来说,来自Pesto的 链接

IEEE单精度浮点标准表示法需要一个32位的字,可以从0到31进行编号,从左到右表示。第一位是符号位S,下一位八位是指数位E,最后23位是小数部分F

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

由该词所表示的值V可以按以下方法确定:

  • If E=255 and F is nonzero, then V=NaN ("Not a number")
  • If E=255 and F is zero and S is 1, then V=-Infinity
  • If E=255 and F is zero and S is 0, then V=Infinity
  • If 0<E<255 then V=(-1)**S * 2 ** (E-127) * (1.F) where "1.F" is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.
  • If E=0 and F is nonzero, then V=(-1)**S * 2 ** (-126) * (0.F) These are "unnormalized" values.
  • If E=0 and F is zero and S is 1, then V=-0
  • If E=0 and F is zero and S is 0, then V=0
问题回答

大多数浮点表示都基于IEEE标准,该标准有为Inf和NaN定义的设置模式。





相关问题
热门标签