- Библиотеки
- Операторы
- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- & (побитовое И)
- Составные операторы
- Данные
- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
- Функции
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
- Функции
& (побитовое И)
Описание
Побитовый оператор И в C++ представляет собой один амперсанд &, используемый между двумя другими целочисленными выражениями. Битовое И действует независимо на каждую позицию бита окружающих выражений, в соответствии с этим правилом: если оба входных бита равны 1, результирующий вывод равен 1, в противном случае выход равен 0.
0 0 1 1 операнд1
0 1 0 1 операнд2
------------
0 0 0 1 результат (операнд1 & операнд2)
В Arduino тип int является 16-битным значением, поэтому использование & между двумя выражениями int приводит к выполнению 16 одновременных операций И.
Пример:
int a = 92; // в двоичном: 0000000001011100
int b = 101; // в двоичном: 0000000001100101
int c = a & b; // результат: 0000000001000100, или 68 в десятичном формате.
Каждый из 16 битов в a и b обрабатывается с использованием побитового И, и все 16 результирующих битов сохраняются в c, что приводит к значению 01000100 в двоичном формате, что составляет 68 в десятичном формате.
Одним из наиболее распространенных применений побитового И является выбор конкретного бита (или битов) из целочисленного значения, часто называемого маской. Ниже приведен пример (специфичный для архитектуры AVR).
PORTD = PORTD & B00000011; // очистить биты 2-7, оставить биты 0 и 1 нетронутыми
// (xx & 11 == xx)