Arduino:Справочник языка Arduino/Унарные операторы/Побитовый оператор OR, совмещенный с присваиванием: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c">» на «<syntaxhighlight lang="c" enclose="div">») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{Arduino панель перехода}} | {{Arduino панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
Строка 78: | Строка 77: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Справочник языка Arduino}} | |||
{{Навигационная таблица/Arduino библиотеки}} | |||
[[Категория:Справочник языка Arduino]] | [[Категория:Справочник языка Arduino]] | ||
[[Категория:Унарные операторы языка Arduino]] | [[Категория:Унарные операторы языка Arduino]] | ||
[[Категория:Унарный оператор]] | [[Категория:Унарный оператор]] |
Версия от 23:15, 19 июня 2019
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Побитовый оператор 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;
См.также
- &= (побитовый оператор AND, совмещенный с присваиванием)
- Побитовый оператор AND (&)
- Побитовый оператор OR