Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Почему выходит -128?

Создадим переменную, увеличим на 1, выведем на печать:
byte a = 127; a++; System.out.print(a);
Почему выходит -128? Логично, что byte не может быть больше 127. Но хотелось бы точного ответа.


Ответ

В переменной типа byte содержится 8 бит. Старший (самый левый) бит отвечает за знак. Если старший бит 1, то число отрицательное, если 0 - то неотрицательное (ноль или положительное).
127 в двоичном представлении - 01111111
Если к этому числу добавить 1, то получится 10000000 (-128), то есть увеличивая число, мы "залезли" в знаковый бит и превратили число в самое маленькое отрицательное, которое может содержать тип byte

Комментариев нет:

Отправить комментарий