如何解决计算机如何根据IEEE 754浮点表示存储0.000000f?
我们知道我们可以在IEEE 754浮点表示中表示任何浮点数,但是在所有浮点数中我们得到的像1.(有些尾数)* 2 ^(有些指数),其中1总是固定为第一个位置,因此我们在将任何IEEE 754浮点数转换回十进制数时都假定它为零,但是在0.000000f的情况下我们将假设什么,因为在这种情况下我们无法以1.(一些尾数)* 2 ^表示该数字(有些指数),因为它的尾数开头永远不能为1,而0除外。
解决方法
计算机如何根据IEEE 754浮点表示形式存储0.000000f?
当float
小于最小的正常非零FLT_MIN
(0 00000001 00000000000000000000000
)时,它以0的编码偏置指数(s 00000000 xxxxxxxxxxxxxxxxxxxxxxx
)存储。隐含位不再是1,而是0,有效偏置指数是1。
当xxxxxxxxxxxxxxxxxxxxxxx
全为零时,该值为+ 0.0f或-0.0f。
一个float
,其编码偏差指数为0,xxxxxxxxxxxxxxxxxxxxxxx
不为零,它是次常态。
FLT_TRUE_MIN
是0 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,因此如果有效位数也为零,则结果值(解释为非正规数)为零。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。