为什么即使float和int的位数相同,它们的最大值也是如此不同?

您可能知道,这两种类型都是32位。int只能容纳整数,而float还支持浮点数(如类型名称所示)。

那么怎么可能最大的值为int2 31,最大的值为 float3.4 * 10 38,而它们都是32位?

我认为int的最大容量应大于浮点数,因为它不会为浮点数节省内存,并且仅接受整数。在这种情况下,我很高兴为您提供解释。

回答:

您的直觉很正确地告诉您,一个 中的 不能超过另一个,因为它们都有32位。但这并不意味着我们不能使用这些位来

不同的值。

假设我发明了两个新的数据类型uint4foo4uint4在标准的二进制表示中,使用4位表示整数

bits   value

0000 0

0001 1

0010 2

...

1111 15

但是foo4使用4位来表示这些值:

bits   value

0000 0

0001 42

0010 -97

0011 1

...

1110 pi

1111 e

现在foo4有一个更 的范围比数值uint4,尽管具有相同的位数!怎么样?因为有些uint4

用表示foo4,所以位映射中的“槽”可用于其他值。


这是相同的intfloat-它们可以从一组2倍的两个存储值32的值,只是 不同 组2个的32值。

以上是 为什么即使float和int的位数相同,它们的最大值也是如此不同? 的全部内容, 来源链接: utcz.com/qa/404827.html

回到顶部