在Java中,int类型的变量在内部表示为32位有符号整数。假设一个位存储符号,另外31个位存储基数2中的数字大小。在此方案中,可以存储为类型
int
的最大值是什么?
答案是(2^31)-1
。我很好奇-1
的目的是什么?为什么必须从数字的大小中减去1
?我不相信1
与标志有任何关系,因为这是第32位的用途。
答案 0 :(得分:4)
您忘记了0
。
在十进制系统中,使用单个数字,您可以存储10
个值,最大值为9
(10^1 - 1
)。
这是同一个故事。如果基数i
中的b
位数,您可以存储b^i
个值,最大值为b^i-1
(我现在忽略了符号位)。< / p>
作为旁注:Java中数字所使用的表示(与许多其他实现中一样)是二进制补码,它具有仅存储0的特性(否则你最终会有两个)根据标志的第一位,0
:-0
和+0
。因此,即使最大值为2^31-1
,最小值为-2^31
。
答案 1 :(得分:0)
你应该学习两种补充符号。所有java整数类型都是有符号的,并且都使用它来表示整数。这非常好,因为你永远不需要减去。