APCS:签名比特

时间:2013-03-08 02:19:14

标签: java integer range

  

在Java中,int类型的变量在内部表示为32位有符号整数。假设一个位存储符号,另外31个位存储基数2中的数字大小。在此方案中,可以存储为类型int的最大值是什么?

答案是(2^31)-1。我很好奇-1的目的是什么?为什么必须从数字的大小中减去1?我不相信1与标志有任何关系,因为这是第32位的用途。

2 个答案:

答案 0 :(得分:4)

您忘记了0

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

这是同一个故事。如果基数i中的b位数,您可以存储b^i个值,最大值为b^i-1(我现在忽略了符号位)。< / p>

作为旁注:Java中数字所使用的表示(与许多其他实现中一样)是二进制补码,它具有仅存储0的特性(否则你最终会有两个)根据标志的第一位,0-0+0。因此,即使最大值为2^31-1,最小值为-2^31

答案 1 :(得分:0)

你应该学习两种补充符号。所有java整数类型都是有符号的,并且都使用它来表示整数。这非常好,因为你永远不需要减去。