微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我们知道我们可以在IEEE 754浮点表示中表示任何浮点数,但是在所有浮点数中我们得到的像1.(有些尾数)* 2 ^(有些指数),其中1总是固定为第一个位置,因此我们在将任何IEEE 754浮点数转换回十进制数时都假定它为零,但是在0.000000f的情况下我们将假设什么,因为在这种情况下我们无法以1.(一些尾数)* 2 ^表示该数字(有些指数),因为它的尾数开头永远不能为1,而0除外。

解决方法

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

float小于最小的正常非零FLT_MIN0 00000001 00000000000000000000000)时,它以0的编码偏置指数(s 00000000 xxxxxxxxxxxxxxxxxxxxxxx)存储。隐含位不再是1,而是0,有效偏置指数是1。

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


一个float,其编码偏差指数为0,xxxxxxxxxxxxxxxxxxxxxxx不为零,它是次常态

FLT_TRUE_MIN0 00000000 00000000000000000000001,这是最小的非零正值。

,

全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,因此如果有效位数也为零,则结果值(解释为非正规数)为零。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。