Предположим что есть байт b = 63. В битах это будет 0011 1111. Как можно занулить первые 4 бита чтобы получилось 0000 1111? Делаю чтобы можно было приводить байты к 16-ричной системе. Для зануления последних 4х битов использую сдвиг >>.
Чтобы из 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.
Используя, например, побитовые операторы
>>>= Сдвиг вправо с заполнением нулями с присваиванием
public static void main(String[] args) {
byte b = 63;
System.out.println(b);
b >>>= 4;
System.out.println(b);
}
Результат:
63
3
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости