inf 和 NaN 的内部表示是什么?
一个朋友& 今天午餐时我正在讨论如何存储 Inf 和 NaN。
以 Fortran 90 为例。 4字节实数可以获得Inf或NaN的值。 这是如何在内部存储的? 据推测,4 字节实数是内部由 32 位二进制数表示的数字。 Inf 和 NaN 是否存储为 33 位二进制数?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
具体来自 Pesto 的链接:
IEEE 单精度浮点标准表示需要一个 32 位字,可以表示为从左到右从 0 到 31 编号。 第一位是符号位
S
,接下来的 8 位是指数位“E
”,最后 23 位是分数“F”
':由该词表示的值
V
可以确定如下:E=255
且F
非零,则V=NaN
(“不是数字”)E=255
且F
为零且S
为 < code>1,则V=-Infinity
E=255
且F
为零且S
> 为0
,则V=Infinity
0 则
V=(-1)**S * 2 ** (E-127) * (1.F)
其中“1.F
”旨在表示通过在 F 前添加隐式前导 1 和二进制来创建的二进制数观点。
E=0
且F
非零,则V=(-1)**S * 2 ** (-126) * (0.F)这些
是“非标准化”值。
E=0
且F
为零且S
为1
,则V=-0< /code>
E=0
且F
为零且S
为0
,则V= 0
Specifically from Pesto's link:
The IEEE single precision floating point standard representation requires a 32 bit word, which may be represented as numbered from 0 to 31, left to right. The first bit is the sign bit,
S
, the next eight bits are the exponent bits, 'E
', and the final 23 bits are the fraction 'F
':The value
V
represented by the word may be determined as follows:E=255
andF
is nonzero, thenV=NaN
("Not a number")E=255
andF
is zero andS
is1
, thenV=-Infinity
E=255
andF
is zero andS
is0
, thenV=Infinity
0<E<255
thenV=(-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 binarypoint.
E=0
andF
is nonzero, thenV=(-1)**S * 2 ** (-126) * (0.F)
Theseare "unnormalized" values.
E=0
andF
is zero andS
is1
, thenV=-0
E=0
andF
is zero andS
is0
, thenV=0
大多数浮点表示都基于 IEEE 标准,该标准具有 为 Inf 和 NaN 定义的设置模式。
Most floating point representations are based upon the IEEE standard, which has set patterns defined for Inf and NaN.