Вы здесь

Операции с битами микроконтроллеры

 Всем доброго дня, сегодня начинаю цикл статей для начинающих программистов-любителей микроконтроллеров. В данной статье будут рассмотрены операции с битами и логические операции, не смотря на то что основные логические операции в электронике одинаковы, мы будем рассматривать на примере работы микроконтроллеров. За основу я возьму микроконтроллеры 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
000000000
12511111101
25511111111
160 (буква а)10100000
239 (буква я)11101111
Бит номер 7 принято называть старшим, а бит 0 младшим битом. Соответствие символа и значения в десятичной системе можно в таблице ASCII :

Операции с битами

 В электронике имеются следующие операции c битами :
  • И (AND) - "&"
  • ИЛИ (OR) "|"
  • НЕ (NOT) - "~"
  • исключающее ИЛИ (XOR) "^"
Разберем каждую операцию по отдельности с примерами.
 
И (AND)
Данная операция сравнивает биты и возвращает единицу если сравниваемые биты одинаковы, ноль если биты отличаются между собой.
 бит 7бит 6бит 5бит 4бит 3бит 2бит 1бит 0
&10100011
 01101010
Результат00110110
 
ИЛИ (OR)
Данная операция сравнивает биты и возвращает единицу если у одного из сравниваемых битов есть единица, в противном случае вернет ноль.
 бит 7бит 6бит 5бит 4бит 3бит 2бит 1бит 0
|10100011
 01101010
Результат11101011
 
 
НЕ (NOT) Инверсия
Данная операция меняет бит на противоположный, если бит равен 1 он возвращает 0, если бит равен 0 он вернет 1. Данную операцию еще называют инверсия.
 бит 7бит 6бит 5бит 4бит 3бит 2бит 1бит 0
~10100011
Результат01011100
 
 
исключающее ИЛИ (XOR
Данная операция сравнивает биты и возвращает единицу только в том случае если один из сравниваемых битов равен 1, если оба бита равны нулю или единице возвращает ноль.
 
 бит 7бит 6бит 5бит 4бит 3бит 2бит 1бит 0
|10100011
 01101010
Результат11001001
 
На сегодня все, спасибо что читали нас. 
Всего голосов: 304