Страницы

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

понедельник, 9 декабря 2019 г.

как занулить первые 4 бита в байте на java

#java #hex


Предположим что есть байт b = 63. В битах это будет 0011 1111.
Как можно занулить первые 4 бита чтобы получилось 0000 1111?
Делаю чтобы можно было приводить байты к 16-ричной системе.
Для зануления последних 4х битов использую сдвиг >>.
    


Ответы

Ответ 1



Чтобы из 0b0110_0010 получить 0b0000_0010, чтобы обнулить первые 4 бита, считая слева-направо (как люди на бумаге пишут): b &= 0b0000_1111; // & 0x0f Чтобы из 0b0110_0010 получить 0b0000_0110, чтобы обнулить первые 4 бита, считая справа-налево: b = (byte) ((b & 0b1111_0000) >> 4); // & 0xf0) >> 4 В данном случае нет разницы между >> и >>>. Для байта легко напечатать все возможные значения, чтобы выбрать желаемое поведение слева или справа очищать биты. Кстати: 63 == 0b0011_1111, а не 0b0110_0010 и даже 0x63 == 0b0110_0011 не равно 0b0110_0010.

Ответ 2



Используя, например, побитовые операторы >>>= Сдвиг вправо с заполнением нулями с присваиванием public static void main(String[] args) { byte b = 63; System.out.println(b); b >>>= 4; System.out.println(b); } Результат: 63 3

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

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