Оператор составного побитового ИЛИ (|=) часто употребляется между переменной и константой чтобы установить (перевести в 1) отдельные биты переменной.
x |= y; // эквивалентно x = x | y;
Для начала рассмотрим действие оператора побитового ИЛИ (|):
0 0 1 1 операнд1
0 1 0 1 операнд2
----------
0 1 1 1 (операнд1 | операнд2) - возвращаемый результат
При выполнении операции побитового ИЛИ, биты операнда1, взаимодействующие с 0 операнда2, не изменяются. Поэтому, если myByte - переменная типа byte,
myByte | B00000000 = myByte;
При выполнении операции побитового ИЛИ, биты операнда1, взаимодействующие с 1, устанавливаются в 1:
myByte | B11111111 = B11111111;
Следовательно, чтобы установить 0-й и 1-й биты переменной, не затронув при этом остальные, необходимо использовать оператор составного побитового ИЛИ (|=) с константой B00000011
1 0 1 0 1 0 1 0 переменная
0 0 0 0 0 0 1 1 маска
----------------------
1 0 1 0 1 0 1 1
не изменившиеся биты
установленные биты
Если биты переменной обозначить как x, то та же операция будет выглядеть так:
x x x x x x x x переменная
0 0 0 0 0 0 1 1 маска
----------------------
x x x x x x 1 1
не изменившиеся биты
установленные биты
Поэтому, если:
myByte = B10101010;
myByte |= B00000011 == B10101011;
Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.