0

在 Java 中,int 类型的变量在内部表示为 32 位有符号整数。假设一位存储符号,其他 31 位存储以 2 为底的数字的大小。在这个方案中,可以存储为 type 的最大值是int多少?

答案是(2^31)-1。我很好奇它的目的-1是什么?为什么一定1要从数的大小中减去?我不相信这1与符号有任何关系,因为这就是第 32 位的用途。

4

2 回答 2

4

你忘记了0.

在十进制系统中,您可以使用单个数字存储10值,最大值是9(即10^1 - 1)。

这是同一个故事。使用ibase 中的数字数字,b您可以存储b^i值,最大的数字是b^i-1(我现在忽略符号位)。

附带说明:Java 中数字使用的表示形式(如在许多其他实现中一样)是二进制补码,其特点是只存储一个 0(否则你最终会得到两个0's:-0+0根据第一位标志)。所以即使最大值是2^31-1,最小的也是-2^31

于 2013-03-08T02:23:43.593 回答
0

您应该了解二进制补码表示法。所有java整数类型都是有符号的,并且都用它来表示整数。这非常好,因为你永远不需要减去。

于 2013-03-08T02:37:41.190 回答