inf 和 NaN 的内部表示是什么?

发布于 2024-07-14 21:28:50 字数 167 浏览 3 评论 0 原文

一个朋友& 今天午餐时我正在讨论如何存储 Inf 和 NaN。

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

A friend & I were debating how Inf's and NaN's are stored during lunch today.

Take Fortran 90 for example. 4-byte reals can obtain the value of Inf or NaN. How is this stored internally? Presumably, a 4-byte real is a number represented internally by a 32 digit binary number. Are Inf's and NaN's stored as 33 bit binary numbers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北笙凉宸 2024-07-21 21:28:50

具体来自 Pesto 的链接

IEEE 单精度浮点标准表示需要一个 32 位字,可以表示为从左到右从 0 到 31 编号。 第一位是符号位 S,接下来的 8 位是指数位“E”,最后 23 位是分数“F” ':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

由该词表示的值V可以确定如下:

  • 如果E=255F非零,则V=NaN(“不是数字”)
  • 如果 E=255F 为零且 S 为 < code>1,则 V=-Infinity
  • 如果 E=255F 为零且 S > 为 0,则 V=Infinity
  • 如果 0V=(-1)**S * 2 ** (E-127) * (1.F) 其中“1.F”旨在表示通过在 F 前添加隐式前导 1 和二进制来创建的二进制数
    观点。
  • 如果 E=0F 非零,则 V=(-1)**S * 2 ** (-126) * (0.F)这些
    是“非标准化”值。
  • 如果 E=0F 为零且 S1,则 V=-0< /code>
  • 如果 E=0F 为零且 S0,则 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':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

The value V represented by the word may be determined as follows:

  • 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
感性不性感 2024-07-21 21:28:50

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

Most floating point representations are based upon the IEEE standard, which has set patterns defined for Inf and NaN.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文