为什么 java 中的最大整数是 2^31 - 1 而不是 2^31
抱歉,如果这是一个非常基本的问题,但为什么积极的一面有一个负数呢?
它与存储的零或其他东西有关吗?我以为计算二进制的最高可能十进制数只是将2的幂相加,就像对于3位无符号一样,它将是
1*2^0 + 1*2^1 + 1*2^2 = 7
同样的规则不应该适用于java整数吗?谢谢
抱歉,如果这是一个非常基本的问题,但为什么积极的一面有一个负数呢?
它与存储的零或其他东西有关吗?我以为计算二进制的最高可能十进制数只是将2的幂相加,就像对于3位无符号一样,它将是
1*2^0 + 1*2^1 + 1*2^2 = 7
同样的规则不应该适用于java整数吗?谢谢
因为 Java 可以支持 max 符号 int,因为 max 符号是 2^31-1。0x7fffffff
2^31 = 0x80000000 is negative so Positive is 2^31-1
二元水平比较将是:
10000000000000000000000000000000 --> 2147483648 --> 2^31
01111111111111111111111111111111 --> 2147483647 --> 2^31 -1
^ Sign bit
同样的规则也适用... 是。是的,这是因为0。:)7
2^3 - 1
相比之下,底片转到-(2^31)
因此,有负数,一个,和严格的正数,它们增加了...2^31
0
2^31-1
2^31 + 1 + 2^31 - 1 = 2 * 2^31 = 2^32