wikipedia page指出“ IEEE 754 32位base-2浮点变量的最大值为(2 − 2 ^ −23)×2 ^ 127≈3.4028235×10 ^ 38”。
答案 0 :(得分:2)
在那个数字中,包括+∞,-∞和NaN吗?
不,它们是特殊的“数字”
“(2 − 2 ^ −23)”中的2是什么?
最大尾数为1.11111 .... 111,此值等于2 − 2 ^ −23。如果将其添加为ULP(2 ^ -23),则将获得2.0
为什么在2 ^ 127中为127?
这基于单精度浮点数的编码方式。有8位代码可以对指数进行编码,实际的指数代码是通过在数字的指数上加上127而获得的。最大指数代码为254(NaN使用255),数字最大指数为254-127 = 127。
在所有IEEE 754代码中,如果将指数编码为 k 位,则最大指数为2 ^(2 ^( k -1)-1)< / p>
答案 1 :(得分:1)
当您查看IEEE-754 binary32的位模式时
然后您会看到存在 2个 32 可能的位组合。所有这些都可能代表浮点数。但是,从这些组合中,有几个具有特殊的意义。这些是11111111
给出指数的组合。这些组合中的任何一个都代表NaN
或Inf
。总共有 2 32 − 8 = 2 24 这样的组合。同样,由于符号位的原因,数字零表示为-0
和+0
。简而言之,binary32浮点数的总数由下式给出:
232 − 224 − 1 = 4 278 190 079
图片取自Wikipedia
答案 2 :(得分:-1)
您在这里问了两个问题。请注意,“可以编码多少个不同的值”与最小值和最大值之间是有区别的。
值的数量非常容易计算。在32位中,您可以具有2 ^ 32或4,294,967,296个值。
“但是”,我听到你说,“ 10 ^ 38大于2 ^ 32!”。是的,这是因为在某种程度上浮点编码实际上不能编码其范围内的所有整数。