Составное побитовое ИЛИ (|=)

Описание

Оператор составного побитового ИЛИ (|=) часто употребляется между переменной и константой чтобы установить (перевести в 1) отдельные биты переменной.


Синтаксис

x |= y;   // эквивалентно x = x | y; 


Параметры

  • x: Переменная типа char, int или long.
  • y: Целочисленная константа либо переменная типа char, int или long.


Пример

Для начала рассмотрим действие оператора побитового ИЛИ (|):

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. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.