BitwiseCompoundOr

Материал из MK90.ORG wiki
Перейти к: навигация, поиск

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

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

Синтаксис


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

Параметры

x: символ, переменная типа int или long

y: целочисленная константа или переменная-символ, int или long

Примеры

Рассмотрим конкретный пример оператора побитного ИЛИ (|=):

  0  0  1  1    операнд1
  0  1  0  1    операнд2
  ----------
  0  1  1  1    (операнд1 | операнд2) - возвращаемый результат

Операция производится позиционно, над соответствующими парами битов в операндах. Там, где в операнде2 позиционно присутствует 0, результат остается неизменным. Если myByte - это переменная типа byte, то:

myByte | B00000000 = myByte;

Если же в операнде2 позиционно встречается 1, то результат всегда будет 1:

myByte | B11111111 = B11111111;

Таким образом, чтобы "установить" (записать единицу) биты 1 и 0 в переменной, не затрагивая при этом остальные биты (2-7), можно использовать составной оператор побитового ИЛИ (|=) с константой 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;

Смотри также

Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.