gpt4 book ai didi

c - 如何在C中表示内存中的FLOAT数

转载 作者:行者123 更新时间:2023-11-30 17:16:23 25 4
gpt4 key购买 nike

在阅读教程时,我遇到了如何在内存中表示 float 。本教程有一个带有 float 的示例。

   float a=5.2  with below Diagram

enter image description here

谁能告诉我这个 5.2 是如何转换成二进制的,以及它是如何在上图中的内存中表示的?

最佳答案

如前所述,5.2 表示为符号位、指数和尾数。 5.2如何编码?

5 很简单:

101. 

其余的,0.2 是 1/5,因此将 1.00000...(十六进制)除以 5,得到 0.3333333...(十六进制)。

(如果你考虑少一点的话,这可以更容易地遵循:0.FFFF...F/5 = 3,所以它是很容易看出 0.FFFF.../5 = 0.33333...。除以 5 时,缺少的一位并不重要,因此 1.0000.../5 = 0.3333 ... 也是)。

这应该给你

0.0011001100110011001100110011... 

加5,就得到

101.00110011001100110011...         exp 0    (== 5.2 * 2^0)

现在将其右移(对其进行标准化,即确保最高位位于小数点之前)并相应地调整指数:

1.010011001100110011001100110011... exp +2   (== 1.3 * 2^2 == 5.2)

现在您只需将 127 的偏差(即 129 = 0b10000001)添加到指数并存储它:

0 10000001 1010 0110 0110 0110 0110 0110 

忘记尾数的前 1 位(除了一些特殊值之外,它始终应该为 1,因此不会存储),您将得到:

01000000 10100110 01100110 01100110

现在您只需决定小端或大端。

这并不完全是它的工作原理,但是当像 5.2 这样的数字转换为二进制时,或多或少会发生这种情况。

关于c - 如何在C中表示内存中的FLOAT数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com