Страницы

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

пятница, 2 ноября 2018 г.

Почему приведение 10000 к byte не даёт максимального значения byte?

Почему при приведении int c = 10000 к типу byte, значение переменной становится равно 16, а не 128, максимальному значению byte?
int c = 10000; byte d = (byte) c; System.out.println(d);


Ответ

Вы не вполне правильно понимаете, как происходит приведение типов.
При приведении int к byte не происходит вычисление «наилучшего приближения». Происходит по-другому: «старшие» байты просто отбрасываются.
10000 = 0x2710 состоит из двух байт: 0x27 и 0x10. Старший байт отбрасывается, остаётся младший 0x10 = 16.

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

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