Arduino:Справочник языка Arduino/Унарные операторы/Побитовый оператор OR, совмещенный с присваиванием: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 69: Строка 69:


=См.также=
=См.также=
{{ads}}
 
# [[Arduino:Справочник языка Arduino/Унарные операторы/&= (побитовый оператор AND, совмещенный с присваиванием)|&= (побитовый оператор AND, совмещенный с присваиванием)]]
# [[Arduino:Справочник языка Arduino/Унарные операторы/&= (побитовый оператор AND, совмещенный с присваиванием)|&= (побитовый оператор AND, совмещенный с присваиванием)]]
# [[Arduino:Справочник языка Arduino/Побитовые операторы/AND(&),OR и XOR (^)|Побитовый оператор AND (&)]]
# [[Arduino:Справочник языка Arduino/Побитовые операторы/AND(&),OR и XOR (^)|Побитовый оператор AND (&)]]
Строка 78: Строка 78:
<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}
{{Навигационная таблица/Arduino продукты}}
{{Навигационная таблица/Arduino/Примеры}}
{{Навигационная таблица/Телепорт}}


[[Категория:Справочник языка Arduino]]
[[Категория:Справочник языка Arduino]]
[[Категория:Унарные операторы языка Arduino]]
[[Категория:Унарные операторы языка Arduino]]
[[Категория:Унарный оператор]]
[[Категория:Унарный оператор]]

Версия от 08:35, 25 февраля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Побитовый оператор OR, совмещенный с присваиванием[1]

Этот оператор (обозначается как «|=») требует, как правило, переменной и константы, а его функция заключается в «перенастройке» некоторых битов в переменной на «1».

Синтаксис

x |= y; // это то же самое, что и x = x | y

Параметры

x  переменная в виде символа, целого или длинного целого
y  константа в виде целого или символ, целое или длинное целое

Пример

Для начала вспомним, как работает побитовый OR:

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  1  1  1    (operand1 | operand2)  возвращенный результат

То есть, если во втором операнде будут «0», то все исходные биты останутся без изменений. Например...

myByte | B00000000 = myByte;

С другой стороны, если во втором операнде будут одни «1», то и все исходные биты тоже поменяются на «1». Вот так...

myByte | B11111111 = B11111111;

Следовательно, чтобы поменять не все, а лишь выборочные биты, мы как раз воспользуемся побитовым оператором OR, совмещенным с присваиванием, и применим его вместе с константой 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    первые 6 бит остались нетронутыми, 2 последних  были изменены

А вот тот же пример, но значения переменной заменены на «иксы»:

x  x  x  x  x  x  x  x    переменная
0  0  0  0  0  0  1  1    маска
----------------------
x  x  x  x  x  x  1  1    первые 6 бит остались нетронутыми, 2 последних  были изменены

Таким образом...

myByte =  B10101010;
myByte |= B00000011 == B10101011;

См.также

  1. &= (побитовый оператор AND, совмещенный с присваиванием)
  2. Побитовый оператор AND (&)
  3. Побитовый оператор OR

Внешние ссылки