На этот вопрос уже есть ответ:
Рассмотрим приведенный ниже код Java.
Integer value = Integer.MIN_VALUE;
System.out.println(value);
value = -value;
System.out.println(value);
Выходные данные
-2147483648
-2147483648
Как отрицательное значение значения Integer.MIN_VALUE
приводит к тому же значению?
Однако результат не может быть 2147483648
, потому что максимальное значение Integer в Java - 2147483647
.
Но хотите знать, почему -2147483648
? Какие побитовые операции выполняются внутри?