在 Java 中,int 类型的变量在内部表示为 32 位有符号整数。假设一位存储符号,其他 31 位存储以 2 为底的数字的大小。在这个方案中,可以存储为 type 的最大值是
int
多少?
答案是(2^31)-1
。我很好奇它的目的-1
是什么?为什么一定1
要从数的大小中减去?我不相信这1
与符号有任何关系,因为这就是第 32 位的用途。
你忘记了0
.
在十进制系统中,您可以使用单个数字存储10
值,最大值是9
(即10^1 - 1
)。
这是同一个故事。使用i
base 中的数字数字,b
您可以存储b^i
值,最大的数字是b^i-1
(我现在忽略符号位)。
附带说明:Java 中数字使用的表示形式(如在许多其他实现中一样)是二进制补码,其特点是只存储一个 0(否则你最终会得到两个0
's:-0
并+0
根据第一位标志)。所以即使最大值是2^31-1
,最小的也是-2^31
。
您应该了解二进制补码表示法。所有java整数类型都是有符号的,并且都用它来表示整数。这非常好,因为你永远不需要减去。