Arduino:Справочник языка Arduino/Унарные операторы/&= (побитовый оператор AND, совмещенный с присваиванием): различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 9: | Строка 9: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
x &= y; // это то же самое, то и x = x & y | x &= y; // это то же самое, то и x = x & y | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 15: | Строка 15: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
x — переменная в виде символа, целого или длинного целого | x — переменная в виде символа, целого или длинного целого | ||
y — константа в виде целого или символ, целое или длинное целое | y — константа в виде целого или символ, целое или длинное целое | ||
Строка 24: | Строка 24: | ||
Во-первых, вспомним, как работает '''побитовый AND''': | Во-первых, вспомним, как работает '''побитовый AND''': | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
0 0 1 1 operand1 | 0 0 1 1 operand1 | ||
0 1 0 1 operand2 | 0 1 0 1 operand2 | ||
Строка 33: | Строка 33: | ||
Таким образом, у пар, где есть как минимум один '''«0»''', в итоге тоже получается '''«0»''', поэтому... | Таким образом, у пар, где есть как минимум один '''«0»''', в итоге тоже получается '''«0»''', поэтому... | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
myByte & B00000000 = 0; | myByte & B00000000 = 0; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 39: | Строка 39: | ||
…а у пар, где оба бита — '''«1»''', итоговым битом тоже будет '''«1»''', то есть... | …а у пар, где оба бита — '''«1»''', итоговым битом тоже будет '''«1»''', то есть... | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
myByte & B11111111 = ByByte; | myByte & B11111111 = ByByte; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 47: | Строка 47: | ||
Следовательно, оператор '''«&=»''' (используемый вместе с константой воде '''B11111100''') нужен как раз для того, чтобы '''«очистить»''' некоторые биты, а другие оставить нетронутыми. | Следовательно, оператор '''«&=»''' (используемый вместе с константой воде '''B11111100''') нужен как раз для того, чтобы '''«очистить»''' некоторые биты, а другие оставить нетронутыми. | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
1 0 1 0 1 0 1 0 переменная | 1 0 1 0 1 0 1 0 переменная | ||
1 1 1 1 1 1 0 0 маска | 1 1 1 1 1 1 0 0 маска | ||
Строка 56: | Строка 56: | ||
Теперь похожий пример, но биты переменной заменены на '''«иксы»''': | Теперь похожий пример, но биты переменной заменены на '''«иксы»''': | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
x x x x x x x x переменная | x x x x x x x x переменная | ||
1 1 1 1 1 1 0 0 маска | 1 1 1 1 1 1 0 0 маска | ||
Строка 65: | Строка 65: | ||
Поэтому если: | Поэтому если: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
myByte = B10101010; | myByte = B10101010; | ||
myByte &= B11111100 == B10101000; | myByte &= B11111100 == B10101000; | ||
Строка 71: | Строка 71: | ||
=См.также= | =См.также= | ||
# [[Arduino:Справочник языка Arduino/Унарные операторы/Побитовый оператор OR, совмещенный с присваиванием||= (побитовый оператор OR, совмещенный с присваиванием)]] | # [[Arduino:Справочник языка Arduino/Унарные операторы/Побитовый оператор OR, совмещенный с присваиванием||= (побитовый оператор OR, совмещенный с присваиванием)]] | ||
# [[Arduino:Справочник языка Arduino/Побитовые операторы/AND(&),OR и XOR (^)|Побитовый оператор AND (&)]] | # [[Arduino:Справочник языка Arduino/Побитовые операторы/AND(&),OR и XOR (^)|Побитовый оператор AND (&)]] | ||
Строка 80: | Строка 80: | ||
<references /> | <references /> | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Arduino}} | ||
[[Категория:Справочник языка Arduino]] | [[Категория:Справочник языка Arduino]] | ||
[[Категория:Унарные операторы языка Arduino]] | [[Категория:Унарные операторы языка Arduino]] | ||
[[Категория:Унарный оператор]] | [[Категория:Унарный оператор]] |
Текущая версия от 12:40, 20 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Побитовый оператор AND, совмещенный с присваиванием[1]
Побитовый AND, совмещенный с присваиванием (обозначается как «&=»), как правило, требует переменной и константы. Он переключает некоторые биты в состояние LOW (т.е. на «0»). В руководствах по программированию эти биты часто называют «очищающими» или «сбрасывающими».
Синтаксис
x &= y; // это то же самое, то и x = x & y
Параметры
x — переменная в виде символа, целого или длинного целого
y — константа в виде целого или символ, целое или длинное целое
Пример
Во-первых, вспомним, как работает побитовый AND:
0 0 1 1 operand1
0 1 0 1 operand2
----------
0 0 0 1 (operand1 & operand2) – возвращенный результат
Таким образом, у пар, где есть как минимум один «0», в итоге тоже получается «0», поэтому...
myByte & B00000000 = 0;
…а у пар, где оба бита — «1», итоговым битом тоже будет «1», то есть...
myByte & B11111111 = ByByte;
Примечание: Поскольку мы работаем с битами, для пущего удобства константы лучше переделать в бинарный вид. Да, эти числа не так понятны, как числа в десятеричном выражении, но они все те же, просто по-другому представлены. И константа B00000000 указана тут для наглядности... ноль — это всегда ноль, в каком бы формате они ни был (хм, что-то меня потянуло на философию...).
Следовательно, оператор «&=» (используемый вместе с константой воде B11111100) нужен как раз для того, чтобы «очистить» некоторые биты, а другие оставить нетронутыми.
1 0 1 0 1 0 1 0 переменная
1 1 1 1 1 1 0 0 маска
----------------------
1 0 1 0 1 0 0 0 первые 6 бит остались нетронутыми, 2 последних - были очищены
Теперь похожий пример, но биты переменной заменены на «иксы»:
x x x x x x x x переменная
1 1 1 1 1 1 0 0 маска
----------------------
x x x x x x 0 0 первые 6 бит остались нетронутыми, 2 последних — были очищены
Поэтому если:
myByte = B10101010;
myByte &= B11111100 == B10101000;
См.также
- |= (побитовый оператор OR, совмещенный с присваиванием)
- Побитовый оператор AND (&)
- Побитовый оператор OR
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Унарные операторы языка Arduino
- Унарный оператор