Всем доброго дня, сегодня начинаю цикл статей для начинающих программистов-любителей микроконтроллеров. В данной статье будут рассмотрены операции с битами и логические операции, не смотря на то что основные логические операции в электронике одинаковы, мы будем рассматривать на примере работы микроконтроллеров. За основу я возьму микроконтроллеры AVR .
В современном мире уже редко услышишь про такую единицу измерения как "байт", технологии не стоят на месте объемы носителей информации постоянно растут и сейчас счет идет на терабайты. Но тем не менее этот самый маленький байт и стоит у истоков всех ГИГА, МЕГА И ТЕРА, по сути он как кирпич при строительстве дома, из множества байтов и собирается вся информация. Если не сильно углубляться байт это всего лишь одна буква этой статьи, но при этом байт не самая единица. Байт сам по себе состоит из битов.
Битов всего восемь и каждый бит может иметь одно из двух значений (состояний) нолей и единиц. Единица это состояние "Включено", а ноль "Выключено". Байт хранит в себе 256 вариантов расположения битов 2*8=256. Есть и особенности с обозначения битов. В отличии от привычного нам начала счета в электронике, все начинается с нуля, по этому получается что биты идут от 0 до 7 что равно 8 значений. И нумеруются биты не слева на право, а наоборот. Для наглядного примера приведу таблицу:
№ бита | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Из выше сказанного следует что десятичном исчислении значения 1 байта могут быть в пределе от 0 до 255. И для Каждого Значения есть уникальная последовательность расположения бит. И тут несколько примеров в таблице:
десятичном исчислении | бит 7 | бит 6 | бит 5 | бит 4 | бит 3 | бит 2 | бит 1 | бит 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
125 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
255 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
160 (буква а) | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
239 (буква я) | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
Бит номер 7 принято называть старшим, а бит 0 младшим битом. Соответствие символа и значения в десятичной системе можно в таблице ASCII :
Операции с битами
В электронике имеются следующие операции c битами :
- И (AND) - "&"
- ИЛИ (OR) "|"
- НЕ (NOT) - "~"
- исключающее ИЛИ (XOR) "^"
Разберем каждую операцию по отдельности с примерами.
И (AND)
Данная операция сравнивает биты и возвращает единицу если сравниваемые биты одинаковы, ноль если биты отличаются между собой.
бит 7 | бит 6 | бит 5 | бит 4 | бит 3 | бит 2 | бит 1 | бит 0 | |
& | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | |
Результат | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
ИЛИ (OR)
Данная операция сравнивает биты и возвращает единицу если у одного из сравниваемых битов есть единица, в противном случае вернет ноль.
бит 7 | бит 6 | бит 5 | бит 4 | бит 3 | бит 2 | бит 1 | бит 0 | |
| | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | |
Результат | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
НЕ (NOT) Инверсия
Данная операция меняет бит на противоположный, если бит равен 1 он возвращает 0, если бит равен 0 он вернет 1. Данную операцию еще называют инверсия.
бит 7 | бит 6 | бит 5 | бит 4 | бит 3 | бит 2 | бит 1 | бит 0 | |
~ | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
Результат | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
исключающее ИЛИ (XOR)
Данная операция сравнивает биты и возвращает единицу только в том случае если один из сравниваемых битов равен 1, если оба бита равны нулю или единице возвращает ноль.
бит 7 | бит 6 | бит 5 | бит 4 | бит 3 | бит 2 | бит 1 | бит 0 | |
| | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | |
Результат | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
На сегодня все, спасибо что читали нас.