Страницы

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

пятница, 20 декабря 2019 г.

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

#java


Почему при приведении int c = 10000 к типу byte, значение переменной становится равно
16, а не 128, максимальному значению byte?

int c = 10000;
byte d = (byte) c;
System.out.println(d);

    


Ответы

Ответ 1



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

Ответ 2



Потому что в byte можно максимум запихать 255. У вас происходит переполнение разрядной сетки. Размер типа byte - 256. Найти число, которое получится после приведения просто - достаточно взять модуль: 10000 % 256 = 16;

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

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