我想知道为什么java int类型(32位有符号(的有效值在-2147483648到2147483647之间,而不是在(-2147483688到214748364(之间?
现代计算机中数字的主要表示形式是某种形式的二进制表示。它由固定数量的位组成,这些位的值为0或1。在Java中,int
被指定使用32位的二进制表示。
一个32位二进制表示可以有2^32个状态。(这是一个数学事实。它可以从第一性原理中得到证明。(
考虑-2^31到+2^31之间的数学整数:
-
范围为1到2^31(含(,共有2^31个数字
-
在-1到-(2^31((含(范围内有2^31个数字
-
零值不在上述任何一个范围内。
所以计算从-2^31到+2^31的数字,我们总共得到2^31+2^31+1个值。这是2^32+1,比2^32状态中可以表示的值更多。
你的建议在数学上是不可能的。