Site Loader

Arduino — Операторы — CoderLessons.com

Оператор – это символ, который указывает компилятору выполнять определенные математические или логические функции. Язык C богат встроенными операторами и предоставляет следующие типы операторов:

  • Арифметические Операторы
  • Операторы сравнения
  • Булевы операторы
  • Битовые операторы
  • Составные операторы

Арифметические Операторы

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда –

Показать пример

Имя оператора Оператор простой Описание пример
оператор присваивания знак равно Сохраняет значение справа от знака равенства в переменной слева от знака равенства. A = B
прибавление + Добавляет два операнда А + Б даст 30
вычитание Вычитает второй операнд из первого A – B даст -10
умножение * Умножьте оба операнда А * Б даст 200
деление / Разделите числитель на знаменатель Б / у даст 2
по модулю % Оператор модуля и остаток от целочисленного деления B% A даст 0

Операторы сравнения

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда –

Показать пример

Имя оператора Оператор простой Описание пример
равно == Проверяет, равно ли значение двух операндов или нет, если да, тогда условие становится истинным.
(A == B) не соответствует действительности
не равно знак равно Проверяет, является ли значение двух операндов равным или нет, если значения не равны, тогда условие становится истинным. (A! = B) верно
меньше, чем < Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. (A <B) верно
лучше чем > Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. (A> B) не соответствует действительности
меньше или равно <= Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. (A <= B) верно
больше или равно > = Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. (A> = B) не соответствует действительности

Булевы операторы

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда –

Показать пример

Имя оператора Оператор простой Описание пример
а также && Называется логический оператор И. Если оба операнда отличны от нуля, тогда условие становится истинным. (A && B) верно
или же || Вызывается логическим оператором ИЛИ. Если любой из двух операндов не равен нулю, тогда условие становится истинным. (A || B) верно
не ! Вызывается логическим оператором НЕ. Используйте для изменения логического состояния своего операнда. Если условие истинно, то оператор Логический НЕ будет делать ложь. ! (A && B) неверно

Битовые операторы

Предположим, что переменная A содержит 60, а переменная B содержит 13, тогда –

Показать пример

Имя оператора Оператор простой Описание пример
а также & Двоичный оператор AND немного копирует результат, если он существует в обоих операндах. B) даст 49, который является 0011 0001
не ~ Оператор дополнения двоичных единиц является унарным и имеет эффект «переворачивания» битов. (~ A) даст -60, что составляет 1100 0011
сдвиг влево << Двоичный оператор левого сдвига. Значение левого операнда перемещается влево на количество битов, указанное правым операндом. << 2 даст 240, что составляет 1111 0000
сдвиг вправо >> Оператор двоичного правого сдвига. Значение левого операнда перемещается вправо на количество битов, указанное правым операндом. A >> 2 даст 15, что 0000 1111

Составные операторы

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда –

Показать пример

Операторы сравнения:

x==y(xравенy)

x!=y(xнеравенy)

x<y(xменьшеy)

x>y(xбольшеy)

x<=y(xменьше или равноy)

x>=y(xбольше или равноy)

Внимание:

Остерегайтесь использования символа одиночного равенства (if(x=10)). В этом случае выполниться присваивание переменнойxзначения, равного 10. Вместо этого необходимо использовать символ двойного равенства (ifx==10), который как раз и сравнивает, равно значение переменной 10 или нет. Предыдущая запись будет всегда верной.

Учтите, что ifвозвращаетTRUEпри любом ненулевом значении.

ifможет использоваться в виде полной структурыif…else

If / else

if/elseдает больший контроль над выполнением кода, поскльку в случае верного условия выполняется только один блок операторов и в другом случае — только другой блок операторов.

if(pinFiveInput< 500)

{

// Действие А

}

else

{

// действие B

}

Также, возможно расширение количества вариантов за счет использования elseifпомимо блокаelse.

if (pinFiveInput < 500)

{

// Действие A

}

else if (pinFiveInput >= 1000)

{

// Действие B

}

else

{

// Действие C

}

Логические операции

Могут быть использованы в оператjрах условия.

&&(логическое И)

Истинно только при выполнении обоих условий, например:

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) {

// …

}

||(логическое ИЛИ)

Истинно, если хотя бы одно из условий выполняется:

if(x> 0 ||y> 0) {

// …

}

!(НЕ)

Истинно если оператор ложен (false)

if(!x) {

// …

}

Внимание:

Логическое И &&(двойной амперасанд) и побитовое И &(одинарный амперсанд) — разные операторы

Также, не стоит путать логическое ИЛИ || (двойная черта) и побитовое ИЛИ operator| (одинарная черта).

Побитовое НЕ ~(тильда) выглядит иначе, чем логическое НЕ !(знак восклицания), но вы должны быть уверены, какой именно использовать.

Указатели и ссылки

&(ссылка) и*(указатель)

Указатели и ссылки являются одними из самых сложных предметов для новичков в программировании.

)

Битовые операции с переменными проводятся на битовом уровне. Данные операции позволяют решать многие проблемы программирования. Представленный материал поможет долстаточно полно разобраться с битовыми операциями.

Описание и синтаксис

Побитовое И (&)

Побитовое И в языке C это одиночный амперсанд (&), используется между двух выражений. Побитовое И оперирует с каждым битом переменных по отдельности, руководствуся правилом — если оба бита перменных одного разряда равны 1, то результатом также будет 1 в данном разряде. В любом другом случае в результате получится ноль.

0 0 1 1 операнд1

0 1 0 1 операнд2

———-

0 0 0 1 (операнд & операнд2) — возвращаемый результат

В Arduino, тип данных int занимает 16-бит, поэтому использование & между двумя переменными типа int вызывает одновременное сравнение 16 бит. Рассмотрим этот код:

int a = 92; // в битовом виде: 0000000001011100

int b = 101; // в битовом виде: 0000000001100101

int c = a & b; // результат: 0000000001000100, или 68 в десятичной системе счисления. операнд2) — возвращаемый результат

По другому алгоритм можно описать так — если биты различны, возвращается 1 и возвращается 0 если они одинаковы.

побитовый сдвиг влево (<<), побитовый сдвиг вправо(>>)

Описание:

Данные два оператора сдвигают влево или вправо значения битов переменной слева на количество, указанное в переменной справа.

Синтаксис:

переменная << число бит

переменная >> число бит

Параметры:

переменная — (byte, int, long) число <= 32

Пример:

int a = 5; // в битовом виде: 0000000000000101

int b = a << 3; // в битовом виде: 0000000000101000, или 40 в десятичной системе счисления

int c = b >> 3; // в битовом виде: 0000000000000101, или 5 с чего мы и начали

Вы можете легко потерять биты, слишком много сдвинув их влево:

int a = 5; // binary: 0000000000000101

int b = a << 14; // binary: 0100000000000000 — старшая 1 в 101 была потеряна

Самым простым способом применения операторов сдвига является нахождение степени числа 2.

1 << 0 == 1

1 << 1 == 2

1 << 2 == 4

1 << 3 == 8

1 << 8 == 256

1 << 9 == 512

1 << 10 == 1024

Если вы сдвигаете биты отрацительной переменной, то старший бит при сдвиге вправо копируется:

int x = -16; // binary: 1111111111110000

int y = x >> 3; // binary: 1111111111111110

Данный пример выдает не то что нам нужно. Чтобы старший бит не копировался, необходимо указать это:

int x = -16; // binary: 1111111111110000

int y = (unsigned int)x >> 3; // binary: 0001111111111110

Если вы осторожны в своих действиях, то можете применять сдвиг вправо для деления переменных на степень двойки.

Например:

int x = 1000;

int y = x >> 3; // целочисленное деление 1000 на 8, возвратит y = 125.

Советы программисту:

данные операции выполняются с высоким быстродействием, так как работа идет с целочисленными переменными. В результате умножение и деление на 2 выполняется едва ли не за 1 такт.

Побитовое НЕ (~)

Побитовое НЕ в C++ обозначается символом тильды ~. В отличие от & и |, побитовое НЕ не сравнивает биты, а просто инвертирует их. Все что было 1 становится 0 и наоборот, Например:

0 1 операнд1

———-

1 0 ~ операнд1

int a = 103; // binary: 0000000001100111

int b = ~a; // binary: 1111111110011000 = -104

Arduino IDE: оператор сравнения или отношения

Введение

Оператор отношения — это оператор, который проверяет связь между двумя объектами. Результат оператора отношения либо истина, либо ложь.

В программировании истина представлена ​​как ‘1’ , а ложь представлена ​​как ‘0’ .

В Arduino IDE есть 6 реляционных операторов:

Реляционные операторы Символ оператора Пример
Больше > текущий год > 2015
Менее 2015
Больше или равно >= currentYear >= 2017
Меньше или равно 2017
Равен == векГод == 2000
Не равно != векГод != 1999

Больше, чем (>)

Это приводит к истинному только  , если первое число больше второго числа. Если первое число меньше или равно второму, оно ложно. Ниже приведен пример:

Результатом операции будет:

7 больше 4: 1

7 больше 10: 0

Меньше чем (

<)

В результате получается истинное число только , если первое число меньше второго числа. Если первое число больше или равно второму, оно ложно. Ниже приведен пример:

Результат операции:

На 7 меньше 4: 0

На 7 меньше 10: 1

Больше или равно (>=)

Это приводит к истине, если первое число больше или равно второму числу. Если первое число меньше второго, то оно ложно. Ниже приведен пример:

Результат операции:

7 больше или равно 10: 0

7 больше или равно 7: 1

Меньше или равно (<=)

Это приводит к истине, если первое число меньше или равно второму числу. Если первое число больше второго, оно дает false. Ниже приведен пример:

Результат операции:

На 7 меньше или равно 4: 0

На 7 меньше или равно 7: 1

Равен 6 (==)

3 приводит к истинному

только , если первое число равно второму числу; в противном случае это приводит к ложному результату. Ниже приведен пример:

Результат операции:

Является ли 7 равным 10: 0

Является ли 7 равным 7: 1

Не равно (!=)

Результатом является true, если первое число равно , а не равно второму числу; в противном случае это приводит к ложному результату. Ниже приведен пример:

Результат операции:

7 не равно 10: 1

7 не равно 7: 1

9000: Операторы

Об этом руководстве

В этом руководстве рассматриваются логические операторы и различные типы логических операторов в Arduino IDE, такие как оператор И, оператор ИЛИ и оператор НЕ.

Информация об обучении

Требуемые компоненты

Изображение Компонент Количество Доступно в комплекте
ивив 1
  • эвив
Кабель USB A-B 1
  • эвив

Введение

Логические операторы оценивают один или два реляционных или логических оператора. В Arduino IDE есть 3 логических оператора:

Логический оператор Символ оператора Пример
ИЛИ || а || б
И && а && б
НЕ ! !

Логика ИЛИ (||) Оператор

Структура

(Утверждение 1) || (Утверждение2)

Логический оператор ИЛИ дает значение true, если Утверждение1 или Утверждение2 или оба верны. Если оба утверждения ложны, то это приведет к ложности. Ниже приведена его таблица истинности:

Утверждение1 Утверждение2 Утверждение1 || Статеймен2
0 0 0
0 1 1
1 0 1
1 1 1

Ниже приведен пример, показывающий, как использовать Logic или Оператор:

Выход последовательного монитора:

Результат 1: 1

Результат 2: 1

2: 1

2: 1

Результат 3: 1

Результат 4: 0

Logic и (&&) Оператор

Структура

(Заявление 1) (Заявление 1) (Заявление 1). И  оператор выдает истину только  , если Заявление 1 и Заявление 2 верны. Если либо Statement1 , либо Statement2 , либо оба являются ложными, результат будет ложным. Ниже, если таблица истинности:

Выписка1 Выписка2 Выписка1 || Statemen2
0 0 0
0 1 0
1 0 0
1 1 1

Ниже приведен пример использования логического оператора И :

Последовательный выход монитора:

Результат 1: 1

Результат 2: 0

Результат 3: 0

Результат 4: 0

9000 !

Структура

! Оператор

Оператор NOT проверяет, дает ли оператор значение 0 или нет.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *