01 | Забележка: | Много програмисти на Arduino се сблъскват с факта, че като параметри на някои функции трябва да изпращате променливи от тип byte (байт). Един байт се състои от 8 бита. Битът е най-малката единица информация в компютърния свят - той може да приема само две стойности - 1 или 0.
В средата на Arduino стойността на байта започва с буквата B и след това стойностите на байта се записват малко по бит:
Също така, когато анализирате байт, се използват концепциите за високи (високи) и ниски (ниски) битове. В нашия пример най-значимият бит е 1 (първият отляво), най-малкият бит е 0 (първият отдясно, последен).
Така например, когато изпълнявате команда за регистъра на микроконтролера DDRD = DDRD B11111100; - две нули в края на байта - ниски битове - отговарят само за 0 ( RX ) и 1 ( TX ) пина на платката Arduino.
Операции върху битове - побитово И ( И )
Побитовият оператор И в C++ е амперсанд & . Правила: резултатът е 1 само ако и двете части на израза са 1, в противен случай резултатът е 0: 0 & 0 == 0 0 & 1 == 0 1 & 0 == 0 1 & 1 == 1
Побитово ИЛИ ( ИЛИ )
Побитовият оператор ИЛИ ( ИЛИ ) в C++ е вертикалната лента. Правила: резултатът е 0 само ако и двете части на израза са 0, в противен случай резултатът е 1: 0 0 == 0 0 1 == 1 1 0 == 1 1 1 == 1
Побитово XOR ( XOR )
Побитовият XOR оператор в C++ е каретката ^. Правила: резултатът е 0 само ако и двете части на израза са равни, в противен случай резултатът е 1: 0 ^ 0 == 0 0 ^ 1 == 1 1 ^ 0 == 1 1 ^ 1 == 0
Побитово НЕ (НЕ)
Побитовият оператор NOT ( NOT ) в C++ е символът тилда
. INразлика от & и , се използва само с един операнд. Той просто обръща битовете.
Операции за изместване на битове
Има само 2 битови операции за изместване - битово изместване наляво и битово изместване надясно >> . Знакът за отместване е последван от число, показващо на колко позиции да се преместят битовете.
Когато един бит се измести наляво, горните битове се губят, а долните се запълват с нули:
Когато един бит се измести надясно, по-ниските битове се губят, а по-високите се запълват с нули:
Операции за присвояване
Всички горепосочени операции (с изключение на побитовата NOT ( NOT )) могат да бъдат записани в кратка форма. Тази техника се използва в случаите, когато при изчисляването на резултата се използва същата променлива, към която ще бъде приписан резултатът:
Манипулации с един бит
Понякога има нужда от точково въздействие върху определен бит от един байт. По-долу са примери за основни операции върху единични битове, използващи операции за преместване на един байт ( 1= B00000001 ).
За да запишете 1 до битово число n (където n = [0, 1, . 7]):
За да запишете нула в бит номер n (където n =[0, 1, . 7]):
(1 // Примерен байт b = B11111111; b &=
Можете да инвертирате бит номер n (където n =[0, 1, . 7]) както следва:
Функции за манипулиране на битове
Ако стандартните функции на Arduino за работа с битове не са доволни от нещо - bit() , bitWrite() , bitSet() , bitClear() , bitRead() или трябва да програмирате индивидуални манипулации с битове, тогава с помощта на стандартни операции можете да приложите всяка битова логика. Например, операцията за обръщане на реда на битовете в байт ще изглежда така: