#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
Комментариев нет:
Отправить комментарий