计算机如何根据 IEEE 754 浮点表示法存储 0.000000f?

How computer stores 0.000000f according to IEEE 754 floating point representation?

正如我们所知,我们可以用 IEEE 754 浮点数 representation.But 表示任何浮点数,在所有浮点数中我们得到类似 1 的东西。(一些尾数)* 2^(一些指数)其中 1总是固定在第一个位置,因此我们在将任何 IEEE 754 浮点数转换回十进制时假设它 number.But 在 0.000000f 的情况下我们将假设什么,因为在这种情况下我们不能表示 1 中的数字。( some mantissa) * 2^(some Exponent) 因为它在尾数的开头永远不能有 1 除了 0.

全0的模式为0保留:

              3  2          1         0
              1 09876543 21098765432109876543210
              S ---E8--- ----------F23----------
      Binary: 0 00000000 00000000000000000000000
         Hex: 0000 0000
   Precision: SP
        Sign: Positive
    Exponent: -127 (Stored: 0, Bias: 127)
   Hex-float: 0x0p+0
       Value: +0.0

请注意,IEEE 表示中有两个 0:+0 和 -0;可以区分。模式 0x80000000 用于后者:

              3  2          1         0
              1 09876543 21098765432109876543210
              S ---E8--- ----------F23----------
      Binary: 1 00000000 00000000000000000000000
         Hex: 8000 0000
   Precision: SP
        Sign: Negative
    Exponent: -127 (Stored: 0, Bias: 127)
   Hex-float: -0x0p+0
       Value: -0.0

正如 Alias 所回答的那样,“所有指数和有效位都设置为零”被定义为零。也可以将零视为 denormal number 的特例。当所有指数位都设置为零(可能的最小指数)时,尾数没有假定前导 1,因此如果尾数也为零,则结果值(解释为非正规数)为零。

How computer stores 0.000000f according to IEEE 754 floating point representation?

当一个float小于最小法线non-zero FLT_MIN0 00000001 00000000000000000000000)时,它被存储为0的编码偏置指数(s 00000000 xxxxxxxxxxxxxxxxxxxxxxx).隐含位不再是 1,而是 0,有效偏置指数为 1。

xxxxxxxxxxxxxxxxxxxxxxx全为0时,值为+0.0f或-0.0f。


A float 编码的偏置指数为 0 且 xxxxxxxxxxxxxxxxxxxxxxx 不为零,它是 sub-normal.

FLT_TRUE_MIN0 00000000 00000000000000000000001,最小的正 non-zero 值。