Создадим переменную, увеличим на 1, выведем на печать:
byte a = 127;
a++;
System.out.print(a);
Почему выходит -128? Логично, что byte не может быть больше 127. Но хотелось бы точного ответа.
Ответ
В переменной типа byte содержится 8 бит. Старший (самый левый) бит отвечает за знак. Если старший бит 1, то число отрицательное, если 0 - то неотрицательное (ноль или положительное).
127 в двоичном представлении - 01111111
Если к этому числу добавить 1, то получится 10000000 (-128), то есть увеличивая число, мы "залезли" в знаковый бит и превратили число в самое маленькое отрицательное, которое может содержать тип byte
Комментариев нет:
Отправить комментарий