Это просто для того, чтобы немного объяснить, что происходит, когда вы используете побитовые операторы.
Допустим, у нас есть 1-байтовое (8-битное) значение: val1 = 00000011. И у нас есть еще одно 1-байтовое значение: val2 = 00100001
Если мы сдвинем биты val1 влево 2, примерно так:
val1 = val1 << 2;
val1 теперь выглядит так: 00001100.
Тогда, если мы ИЛИ (|) val2 с val1 следующим образом:
val1 = val1 | val2
val1 будет выглядеть так: 00101101.
Надеюсь, это поможет ^ _ ^