为什么即使float和int的位数相同,它们的最大值也是如此不同?
您可能知道,这两种类型都是32位。int
只能容纳整数,而float
还支持浮点数(如类型名称所示)。
那么怎么可能最大的值为int
2 31,最大的值为 float
3.4 * 10 38,而它们都是32位?
我认为int
的最大容量应大于浮点数,因为它不会为浮点数节省内存,并且仅接受整数。在这种情况下,我很高兴为您提供解释。
回答:
您的直觉很正确地告诉您,一个 中的 不能超过另一个,因为它们都有32位。但这并不意味着我们不能使用这些位来
不同的值。
假设我发明了两个新的数据类型uint4
和foo4
。uint4
在标准的二进制表示中,使用4位表示整数
bits value0000 0
0001 1
0010 2
...
1111 15
但是foo4
使用4位来表示这些值:
bits value0000 0
0001 42
0010 -97
0011 1
...
1110 pi
1111 e
现在foo4
有一个更 的范围比数值uint4
,尽管具有相同的位数!怎么样?因为有些uint4
值
用表示foo4
,所以位映射中的“槽”可用于其他值。
这是相同的int
和float
-它们可以从一组2倍的两个存储值32的值,只是 不同 组2个的32值。
以上是 为什么即使float和int的位数相同,它们的最大值也是如此不同? 的全部内容, 来源链接: utcz.com/qa/404827.html