繁体   English   中英

使用 IEEE 754 浮点到二进制

[英]Floating point to binary using IEEE 754

您好,我需要使用 IEEE 格式存储 0.2730。 现在我所做的是将 sing 设置为 0,因为这个数字是正数。 现在我想,既然点之前是 0,那么我不必对它进行任何转换,因为二进制中的 0 它只是 0,所以指数最终会是 0,我只需要将 127 转换为二进制。 当我寻找尾数时,我试图做模式,当我将小数部分乘以 2 并在我找不到模式也没有达到 0 之前取出数字所以我所做的只是乘以直到找到 23 位. 现在,当我查看实际值时,它说指数应该是 125,而这个数字实际上是 0 0111 0001 0111 1000 1101 0101 000。现在我不知道为什么我必须从指数中减去 2,因为我认为我在进行乘以 2 模式时,不必移动点或何时停止。 我留下了我工作的照片以防万一。 在此先感谢您,希望您一切顺利

在此处输入图像描述

IEEE-754 binary32 编码

0.2730 的符号为正,因此 IEEE-754 binary32 格式的符号位将为零。

接下来,用 2 的幂表示具有显式缩放的数字: 0.2730 = 0.2730 • 2 0 在此,我们将“•” (0.2730) 之前的部分称为有效数字 ,而 2 的幂是指数

然后,调整此表示以使有效数字至少为 1 且小于 2。允许的调整是将指数调整为增量 1,并相应地将有效数字乘以或除以 2:0.2730 • 2 0 = 0.5460 • 2 -1 = = 1.0920 • 2 -2

这称为规范化形式。 这种形式的指数 -2 用于编码。 为了在指数位中对其进行编码,我们添加了格式的固定偏差 127,并将结果写入 8 位二进制。 −2 + 127 = 125,二进制的 125 是 01111101。

接下来,将二进制的有效数字写入至少 24 位:1.0920 = 1.00010111100011010100111 11101111100111011… 2 粗体显示前 24 位数字。 我们只能使用 IEEE-754 binary32 格式的 24 位数字,并且我们看到剩余部分在第 24数字的一半以上,因此我们将四舍五入,产生 1.00010111100011010101000 2 那是我们二进制的有效数字。 (有关执行此操作的信息,请参阅下面的“十进制到二进制”。)

为了对有效数字进行编码,我们使用“.”后面的 23 位数字。 (已知前导数字是 1,因为我们对数字进行了规范化以使其如此,所以它不需要包含在主要对有效数字进行编码的位中。)这些位是 00010111100011010101000。

然后我们将符号、指数和有效位放在一起:0 01111101 00010111100011010101000。

十进制转二进制

要将十进制数字 1.0920 转换为二进制:

  • 写下开头的“1”并将其删除,给出.0920。 乘以 2,得到 0.1840。 还要写“。” 因为我们从这一点开始。
  • 写入前导“0”并将其删除,给出.1840。 乘以 2,得到 0.3680。
  • 写入前导“0”并将其删除,给出.3680。 乘以 2,得到 0.7360。
  • 写入前导“0”并将其删除,给出.7360。 乘以 2,得到 1.4720。
  • 写下开头的“1”并将其删除,给出.4720。 乘以 2,得到 0.9440。

根据需要继续。

很难看清图片中的内容,但这里是数字0.2730的二进制布局,作为单精度和双精度 IEEE-754 表示。 希望您可以使用它来仔细检查您的答案。 如果您不匹配,请随时提出更具体的问题。

这是0.2730的单精度(32 位)IEEE-754 表示:

                  3  2          1         0
                  1 09876543 21098765432109876543210
                  S ---E8--- ----------F23----------
          Binary: 0 01111101 00010111100011010101000
             Hex: 3E8B C6A8
       Precision: SP
            Sign: Positive
        Exponent: -2 (Stored: 125, Bias: 127)
       Hex-float: +0x1.178d5p-2
           Value: +0.273 (NORMAL)

这也是一样的,这次是双精度(64 位)IEEE754 表示:

                  6    5          4         3         2         1         0
                  3 21098765432 1098765432109876543210987654321098765432109876543210
                  S ----E11---- ------------------------F52-------------------------
          Binary: 0 01111111101 0001011110001101010011111101111100111011011001000110
             Hex: 3FD1 78D4 FDF3 B646
       Precision: DP
            Sign: Positive
        Exponent: -2 (Stored: 1021, Bias: 1023)
       Hex-float: +0x1.178d4fdf3b646p-2
           Value: +0.273 (NORMAL)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM