2016-04-18 47 views
2

Java中的Integer.MIN_VALUE的二进制表示形式为10000000000000000000000000000000Integer.MIN_VALUE的二进制表示形式

为什么它不是10000000000000000000000000000001而是因为在它的二进制补码中加1会比10000000000000000000000000000000大1呢?

+0

我不是很清楚你的问题中的最后一句话:“既然一个补码的加1会大于10000000000000000000000000一个?” – Nier

回答

3

int在Java中有符号的32位数字,即第32位,就像你说的,代表了负数,小数,-(2^31),并以二进制:

10000000000000000000000000000000 
^ → "negative bit" 

但剩下的31位仍处于签系统“积极的”位,所以:

10000000000000000000000000000001 → -2^31 + 1 

而且-2^31 + 1-2^31更大。