取二进制0x80000000
我们得到
1000 0000 0000 0000 0000 0000 0000 0000
这如何等同于-2147483648
。我用这个程序得到了这个问题。
class a
{
public static void main(String[] args)
{
int a = 0x80000000;
System.out.printf("%x %d\n",a,a);
}
}
meow@VikkyHacks:~/Arena/java$ java a
80000000 -2147483648
编辑我了解到 2 的补码用于表示负数。当我试图将它与那个 1 的补码等同起来时
1's Comp. :: 0111 1111 1111 1111 1111 1111 1111 1111
2's Comp. :: 1000 0000 0000 0000 0000 0000 0000 0000
这又没有任何意义,如何0x80000000
等同于-2147483648