Взяв двоичный файл 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
EDIT Я узнал, что дополнение 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
0x80000000
от-2147483648
? - person Matt Ball   schedule 15.09.2013