Java中Integer.MIN_VALUE
的二进制表示形式为10000000000000000000000000000000
。
为什么它不是10000000000000000000000000000001
,因为在它的两个补码中加一个会比10000000000000000000000000000000
加一个?
答案 0 :(得分:3)
int
是一个带符号的32位数字,这意味着第32位,如你所说,代表负数,十进制,-(2^31)
和二进制:
10000000000000000000000000000000
^ → "negative bit"
但剩下的31位仍然是“正面”#34;签名系统中的位,所以:
10000000000000000000000000000001 → -2^31 + 1
-2^31 + 1
大于-2^31
。