使用浮点二进制格式的变量如何存储值 0.0

How does a variable using a Floating-point binary format stores the value 0.0

基本上我现在很困惑,无法在 Whosebug 上或通过 google 搜索找到任何有用的信息。我一直在阅读有关计算机如何以二进制格式存储不同数据类型的信息,以便更好地理解 C 编程和计算机科学的一般知识。我想我明白浮点数是如何工作的,但据我所知,小数点前的第一位(或二进制点 idk)不包括在内,因为它应该总是 1,因为我们将小数点移到了第一位后面从左到右的值为 1。 在那种情况下,由于我们不存储第一位,我们如何能够区分存储值 1.0 和 0.0 的浮点变量。

Ps。如果需要,请毫不犹豫地编辑此 post。英语不是我的母语。

... first bit in front of ... binary point ... isn't included because it is supposedly always 1 ...

总是

使用常见的浮点格式,例如 float32, when the biased exponent is a (0), the significand (erroneously called the mantissa) has a leading 0 and not 1. At that point the biased exponent encodes 也有所不同。

“零”通常编码为全 zero-bit 模式。

            v--- Implied bit
0 11111110 (1) 111_1111_1111_1111_1111_1111 Maximum value (~3.4e38)
0 01111111 (1) 000_0000_0000_0000_0000_0000 1.0
0 00000001 (1) 000_0000_0000_0000_0000_0000 smallest non-zero "normal" (~1.18e-38)
0 00000000 (0) 111_1111_1111_1111_1111_1111 largest  "sub-normal" (~1.18e-38)
0 00000000 (0) 000_0000_0000_0000_0000_0001 smallest "sub-normal" (~1.40e-45)
0 00000000 (0) 000_0000_0000_0000_0000_0000 zero

-0.0,支持时与 0.0 相同,符号位位置为 1。