Какие основные типы операторов используются в Arduino. Как применять арифметические, побитовые, сравнения и логические операторы в скетчах. Какие составные операторы позволяют сократить код.
Основные типы операторов в Arduino
В программировании микроконтроллеров Arduino используется несколько ключевых типов операторов, которые позволяют выполнять различные действия с данными:
- Арифметические операторы — для математических вычислений
- Операторы сравнения — для сравнения значений
- Логические операторы — для построения логических выражений
- Побитовые операторы — для работы с отдельными битами
- Составные операторы — для сокращения кода
Рассмотрим подробнее каждую группу операторов и их применение в скетчах Arduino.
Арифметические операторы в Arduino
Арифметические операторы используются для выполнения базовых математических действий:
+
— сложение-
— вычитание*
— умножение/
— деление%
— остаток от деления
Пример использования:
int a = 10;
int b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int prod = a * b; // 30
int quot = a / b; // 3
int rem = a % b; // 1
Эти операторы позволяют выполнять вычисления с числовыми переменными и константами в Arduino.
Операторы сравнения в скетчах Arduino
Операторы сравнения используются для проверки условий и сравнения значений:
==
— равно!=
— не равно<
— меньше>
— больше<=
— меньше или равно>=
— больше или равно
Пример использования в условном операторе:
int x = 10;
int y = 20;
if (x < y) {
// Выполнится, так как 10 меньше 20
}
if (x == 10) {
// Выполнится, так как x равно 10
}
Операторы сравнения возвращают логическое значение true или false и часто используются в условных конструкциях.
Логические операторы для построения сложных условий
Логические операторы применяются для объединения нескольких условий:
&&
— логическое И||
— логическое ИЛИ!
— логическое НЕ
Пример использования:
int a = 5;
int b = 10;
if (a > 0 && b < 20) {
// Выполнится, так как оба условия истинны
}
if (a == 5 || b == 15) {
// Выполнится, так как первое условие истинно
}
if (!(a == b)) {
// Выполнится, так как выражение в скобках ложно
}
Логические операторы позволяют создавать сложные условия для управления ходом выполнения программы.
Побитовые операторы для работы с отдельными битами
Побитовые операторы используются для манипуляций с отдельными битами в числах:
&
— побитовое И|
— побитовое ИЛИ^
— побитовое исключающее ИЛИ~
— побитовое НЕ<<
— побитовый сдвиг влево>>
— побитовый сдвиг вправо
Пример использования:
int a = 5; // 0101 в двоичной системе
int b = 3; // 0011 в двоичной системе
int c = a & b; // 0001 (1 в десятичной)
int d = a | b; // 0111 (7 в десятичной)
int e = a ^ b; // 0110 (6 в десятичной)
int f = ~a; // 1010 (-6 в десятичной)
int g = a << 1; // 1010 (10 в десятичной)
int h = a >> 1; // 0010 (2 в десятичной)
Побитовые операции часто используются для эффективной работы с регистрами и флагами в микроконтроллерах.
Составные операторы для сокращения кода
Составные операторы объединяют операцию присваивания с другими операциями для сокращения записи:
+=
— прибавить и присвоить-=
— вычесть и присвоить*=
— умножить и присвоить/=
— разделить и присвоить%=
— взять остаток и присвоить&=
,|=
,^=
— побитовые операции и присвоение<<=
,>>=
— побитовый сдвиг и присвоение
Пример использования:
int x = 10;
x += 5; // Эквивалентно x = x + 5;
x -= 3; // Эквивалентно x = x - 3;
x *= 2; // Эквивалентно x = x * 2;
x /= 4; // Эквивалентно x = x / 4;
x %= 3; // Эквивалентно x = x % 3;
x &= 0b1111; // Побитовое И и присвоение
x |= 0b1010; // Побитовое ИЛИ и присвоение
x ^= 0b1100; // Исключающее ИЛИ и присвоение
x <<= 2; // Сдвиг влево на 2 бита и присвоение
x >>= 1; // Сдвиг вправо на 1 бит и присвоение
Составные операторы позволяют сделать код более компактным и читаемым.
Приоритет операторов в Arduino
При использовании нескольких операторов в одном выражении важно учитывать их приоритет. Операторы с более высоким приоритетом выполняются раньше. Основной порядок приоритетов:
- Скобки
()
- Унарные операторы
++
,--
,!
,~
- Умножение
*
, деление/
, остаток%
- Сложение
+
, вычитание-
- Побитовые сдвиги
<<
,>>
- Операторы сравнения
<
,<=
,>
,>=
- Операторы равенства
==
,!=
- Побитовые операторы
&
,^
,|
- Логические операторы
&&
,||
- Операторы присваивания
=
,+=
,-=
и т.д.
Пример с учетом приоритета операторов:
int result = 5 + 3 * 2; // Результат будет 11, а не 16
int result2 = (5 + 3) * 2; // Результат будет 16
Правильное использование скобок и понимание приоритета операторов помогает избежать ошибок в вычислениях.
Особенности применения операторов в Arduino
При работе с операторами в Arduino следует учитывать некоторые особенности:
- Целочисленное деление: при делении целых чисел результат округляется до целого. Например,
5 / 2
даст результат 2, а не 2.5. - Переполнение: при выходе за пределы диапазона типа данных происходит переполнение. Например, для 8-битного типа
byte
после 255 идет 0. - Приведение типов: при операциях с разными типами данных происходит автоматическое приведение к более «широкому» типу.
- Побитовые операции: работают только с целочисленными типами данных.
Пример с учетом особенностей:
byte a = 255;
a++; // Теперь a равно 0 из-за переполнения
int x = 5;
int y = 2;
float z = x / y; // z будет равно 2.0, а не 2.5
long l = 1000000;
int i = 100;
long result = l * i; // Правильный результат
int wrong = l * i; // Возможно переполнение
Понимание этих особенностей помогает писать более надежный и предсказуемый код для Arduino.
104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader). — GetChip.net
Давайте немного отвлечемся от создания нашего робота и поговорим о том, как мы будем записывать прошивку в Arduino.
Нас, прежде всего, интересуют три платы Arduino:
— Arduino Uno – как самый распространенный вариант
— Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
— Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.
Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).
Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf (10310 Загрузок)
Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).
Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!
Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.
Начнем, конечно, с моей программы загрузчика
GC-Uploader
gcUploader.zip (21683 Загрузки)
Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.
Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)
XLoader.zip (26185 Загрузок)
Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload
Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.
XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.
Автоматизация XLoader.
При разработке ПО для микроконтроллера производится очень много прошивок и всегда нужно стремиться автоматизировать этот процесс после сборки проекта — это экономит время и нервы. В данном случае автоматизация усложнена, так как программа не показывает командную строку для AVR Dude (разве что подбирать опытным путем), но некоторое упрощение процесса возможно. Делается это следующим способом – после первой прошивки не закрываем окно программы (COM порт после прошивки программа отпускает) и после следующей сборки проекта просто жмем кнопку «Upload». Конечно, сборка должна осуществляться в один и тот же Hex-файл.
Еще одна программка
ARP Uploader (Arduino Hex Uploader and Programmer)
ArduinoUploader.zip (22470 Загрузок)
Как и предыдущая, программка имеет простой интерфейс.
Процесс прошивки тот же:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт
— жмем Upload
Программа при записи открывает дополнительные окна и визуально отображает свои действия, что позволяет следить за процессом записи.
При попытке прошить Arduino Nano программа отказывалась видеть МК. Причиной стала неправильная установка скорости COM порта. По умолчанию скорость стоит 19200, а нужно 57600. Скорость порта в программе не задается явно, она прописывается в строчке «AVR Dude Params» — поменяйте в ней значение 19200 на 57600.
Автоматизация ARP Uploader.
Дополнительные материалы.
Драйвера Arduino.
Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»
Arduino_drivers.zip (13750 Загрузок)
Стали появляться недорогие китайские Ардуины с драйвером Ch440G
Driver-Ch440G. zip (Одна Загрузка)
Загрузчики Arduino
Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.
ATmegaBOOT_168_atmega328.zip (12877 Загрузок)
Для правильной работы нужно установить фьюзы следующим образом Low: FF High: DA Ext: 05
ATmegaBOOT_168_diecimila.zip (6663 Загрузки)
Фьюзы Low: FF High: DD Ext: 00
Схемы Arduino
Cхемы вышеописанных Ардуин.
Arduino_Uno_Rev3-schematic.pdf (Одна Загрузка)
ArduinoNano30Schematic.pdf (10103 Загрузки)
Arduino-Pro-Mini-schematic.pdf (8877 Загрузок)
Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05
Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05
LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
(Visited 181 779 times, 1 visits today)
Программирование Arduino: с чего начать изучение
Говоря простым языком, Arduino – это электронный конструктор, плата, в которую можно воткнуть кучу разных устройств и заставить их работать вместе. Размер платы – примерно как спичечный коробок, при этом к ней можно подключить двигатели, лампочки, датчики, в общем, практически любую электронику.
- Плата Arduino Uno. Недорогая модель (25-30 долларов) с 32 Кб памяти и процессором на 16 МГц. Вместе с оригинальной платой идет пакет драйверов, с китайскими аналогами потребуется дополнительный драйвер для USB-TTL контроллера.
- Персональный компьютер или ноутбук с версией Windows 7 и выше. Ардуино работает и на Linux (среда кроссплатформенная).
- Кабель USB. Для начала USB B, по мере вашего прогресса еще понадобятся mini-USB (для плат Arduino Nano) и micro-USB (для Arduino micro).
- Светодиодный элемент.
Подготовка и подключение устройства
Для создания алгоритмов на платформе Arduino используется язык программирования — C++. Работает он через официальную среду Arduino IDE – скачайте ее с официального сайта и инсталлируйте на компьютер (приложение бесплатное и занимает всего 100 Мб). В программе выберите рабочую плату (в нашем случае Arduino Uno).
Важно: плата Arduino Uno работает на Java, поэтому дополнительно установите также пакет JRE (Java).
Сама плата подключается к компьютеру через обычный USB-кабель. После подключения устройства (на плате загорится зеленая светодиодная лампочка) Windows сама предложит установить драйвер.
Важно: в диспетчере устройств нужно зайти в раздел «Порты (COM и LPT)» и указать порт, к которому подключен контроллер.
Первые шаги в программировании
Программы для платформы Ардуино называются скетчами. Если вы новичок, самому писать первую программу нет нужды – в среде Arduino IDE уже есть готовые примеры скетчей.
Готовые скетчи находятся в подпункте «Образцы» главного меню. Все, что от вас требуется, это загрузить выбранную программу в устройство. Для этого подключите плату к компьютеру, подождите, пока она будет распознана и нажмите кнопку «Загрузить» в Arduino IDE.
Пример простейшего скетча – программа для мигания светодиода. В ней не больше 10 строк кода, причем основной массив – это бесконечный цикл «loop», повторяющийся до тех пор, пока на плату подается напряжение. Результат использования этой программы – периодически мигающая лампочка, подключенная к одному из портов платы. Кстати, этим простым скетчем удобно проверять купленные в магазине платы. Проверка занимает буквально секунды.
Для самостоятельного написания скетчей в приложении есть специальный текстовый редактор с удобной цветовой подсветкой программного кода.
Что дальше
Попробовав и проанализировав готовые программные решения в Arduino IDE, переходите к более сложным скетчам, размещенным на специализированных ресурсах. В сети есть готовые библиотеки для работы с таймерами, сенсорами, портами, звуком, шаговыми двигателями и прочим железом. Они придают платформе дополнительную функциональность.
Обязательно прочтите пару книг. Хорошо пишут на эту тему Джереми Блюм, Саймон Монк, Юрий Менщиков. Из книг них вы узнаете, как программировать микроконтроллеры, поймете принципы построения скетчей и логику программной части. Эти авторы не просто подают теорию, а приводят рабочие и, главное, полезные технические решения – от простейших датчиков температуры до сложных систем для «умного» дома.
Справочник Arduino— Справочник Arduino
Эта страница также доступна на 2 других языках
изменение языка
Английский
- Немецкий
- Португальский (Бразилия)
функции
Для управления платой Arduino и выполнения вычислений.
Цифровой ввод/вывод
цифровойЧитать()цифровая запись ()
контактный режим ()
Аналоговый ввод/вывод
аналоговоеЧтение()аналоговая ссылка()
аналоговая запись ()
Zero, Due и MKR Family
аналогReadResolution()аналогWriteResolution()
Расширенный ввод-вывод
Не один()импульсВ()
пульсДлинный()
перейти в()
сдвигВыход()
тон()
Время
задерживать()задержкамикросекунд()
микро()
миллис()
Математика
абс()ограничение()
карта()
Максимум()
мин()
пау ()
кв()
квт()
Тригонометрия
потому что ()грех()
загар()
Символов
Альфа()isAlphaNumeric()
isAscii()
isControl()
isDigit()
isGraph()
isHexadecimalDigit()
нижний регистр()
isPrintable ()
точка()
isSpace()
Верхний регистр()
естьбелое пространство ()
Случайные числа
случайный()случайное семя()
Биты и байты
кусочек()битОчистить()
битПрочитать()
битовый набор()
битЗапись()
высокий байт ()
низкий байт()
Внешние прерывания
прикрепить прерывание ()отсоединить прерывание ()
Прерывания
прерывает()без прерываний ()
Связь
СерийныйСПИ
Ручей
Проволока
USB
Клавиатурамышь
переменные
Типы данных и константы Arduino.
Константы
ВЫСОКИЙ | НИЗКИЙВВОД | ВЫХОД | INPUT_PULLUP
LED_ВСТРОЕННЫЙ
правда | ЛОЖЬ
Константы с плавающей запятой
Целочисленные константы
Преобразование
(целое без знака)(длинный без знака)
байт()
символ ()
плавать()
интервал()
длинная()
слово()
Типы данных
множествологический
логический
байт
уголь
двойной
плавать
инт
длинная
короткая
размер_t
нить
Нить()
беззнаковый символ
беззнаковое целое
беззнаковый длинный
пустота
слово
Область видимости переменных и квалификаторы
константасфера
статический
изменчивый
Коммунальные услуги
ПРОГРАММАразмер()
структура
Элементы кода Arduino (C++).
Эскиз
петля()настраивать()
Структура управления
ломатьПродолжать
делать пока
еще
за
перейти к
если
возвращаться
переключатель … случай
пока
Дальнейший синтаксис
#определять (определять)#включают (включают)
/* */ (заблокировать комментарий)
// (однострочный комментарий)
; (точка с запятой)
{} (фигурные скобки)
Арифметические операторы
% (остаток)* (умножение)
+ (добавление)
— (вычитание)
/ (разделение)
знак равно (оператор присваивания)
Операторы сравнения
знак равно (не равно)< (меньше, чем)
<= (меньше или равно)
== (равно)
> (лучше чем)
>= (больше или равно)
Логические операторы
! (логично нет)&& (логично и)
|| (логическое или)
Операторы доступа к указателям
& (ссылочный оператор)* (оператор разыменования)
Побитовые операторы
& (побитовое и) 9(побитовый xor)| (побитовое или)
~ (побитово нет)
Составные операторы
знак равно (сложный остаток)знак равно (составное побитовое и)
знак равно (сложное умножение)
++ (приращение)
+= (составное добавление)
— (уменьшение) 9знак равно (составной побитовый xor)
|= (составное побитовое или)
операторов Arduino | 5 удивительных операторов в программировании Arduino
В программировании Arduino оператор Arduino является одной из самых важных тем. Он используется для выполнения таких операций, как присваивание, логическое, специальное, инкрементное и т. д. Знание этих операторов важно для выполнения математических и логических вычислений в Arduino. Таким образом, в основном оператор отвечает за работу с данными. Например, если нам нужно выполнить сложение двух чисел, мы будем использовать оператор сложения, так как он отвечает за выполнение операции сложения данных. В программировании Arduino все эти операторы сгруппированы в пять различных категорий в зависимости от операций.
Различные операторы, используемые в программировании Arduino
Ниже приведены группы операторов, которые мы можем использовать в программировании Arduino:
- Арифметические операторы
- Побитовые операторы
- Операторы сравнения
- Логические операторы
- Составные операторы
1. Арифметические операторы
Программы широко используются для выполнения математических вычислений. В Arduino мы можем писать простые программы, которые могут выполнять математические вычисления, такие как сложение, вычитание, умножение, деление и многое другое.
Оператор | Символ | Описание | Пример |
Оператор присвоения | = | Используется для присвоения значения справа от знака равенства переменной слева. | Чтобы присвоить B значение 10, напишите B=10. |
Оператор сложения | + | Используется для добавления двух операндов. | Предположим, что A=10 и B=20, тогда A+B даст 30. |
Оператор вычитания | – | Используется для вычитания двух операндов. | Предположим, что A=30 и B=20, тогда A-B даст 10. |
Оператор умножения | * | Используется для умножения операндов. | Предположим, что A=10 и B=2, тогда A*B даст 20. |
Оператор отдела | / | Используется для разделения двух операндов. | Предположим, что A=10 и B=20, тогда B/A даст 2. |
Оператор по модулю | % | Используется для получения остатка двух операндов при их разделении. | Предположим, что A=10 и B=23, тогда B%A даст 3. |
2. Операторы сравнения
Эти операторы используются для сравнения значений операнда. Типы выполняемых сравнений: равно, не равно, меньше, больше и многие другие. Эти операторы сравнения возвращают логическое значение (True/False).
Оператор | Символ | Описание | Пример |
Равен оператору | = = | Используется для проверки равенства значений двух операндов. В случае, если он не равен, он вернет False, иначе он вернет True. | Предположим, что A=20 и B=22, чтобы проверить, равно ли A равен B, напишите A==B. Он вернет False. |
Не равно | != | Используется для проверки равенства значений двух операндов. В случае, если он не равен, он вернет true, иначе он вернет False. | Предположим, что A=20 и B=22, чтобы проверить, не равно ли A не равно B, напишите A!=B. Он вернет True. |
Менее | < | Используется для проверки, меньше ли операнд слева, чем операнд справа. В этом случае, если условие верно, оно возвращает true, иначе false. | Предположим, что A=20 и B=22, чтобы проверить, меньше ли A, чем B, напишите A |
Больше | > | Используется для проверки, больше ли операнд слева, чем операнд справа. В этом случае, если условие верно, оно возвращает true, иначе false. | Предположим, что A=20 и B=22, чтобы проверить, больше ли A, чем B, напишите A>B. Он вернет False. |
Меньше равно | <= | Используется для проверки того, что операнд в левой части меньше или равен операнду в правой части. В этом случае, если условие верно, оно возвращает true, иначе false. | Предположим, что A=20 и B=22, чтобы проверить, меньше ли A, чем B, напишите A<=B. Он вернет True. |
Больше, чем равно | >= | Используется для проверки того, что операнд в левой части больше или равен операнду в правой части. В этом случае, если условие верно, оно возвращает true, иначе false. | Предположим, что A=20 и B=22, чтобы проверить, больше ли A, чем равно B, напишите A>=B. Он вернет False. |
3.
Логические операторыЭти операторы помогают принять решение на основе условий. В тех случаях, когда мы должны объединить результат двух условий. В результате это значение приводит к логическому значению.
Оператор | Символ | Описание | Пример |
Логический И | && | Проверяет, являются ли оба операнда ненулевыми или нет. В случае, если оба оператора отличны от нуля, условие становится действительным, оно вернет true, иначе оно вернет False. | Предположим, что A равно 10, а B равно 20, тогда A&&B истинно. |
Логический или | || | Проверяет, отличен ли один из двух операндов от нуля. В случае, если любой из них отличен от нуля, условие становится действительным, оно возвращает значение true, иначе оно возвращает значение False. | Предположим, что A равно 10, а B равно 20, тогда A&&B истинно. Предположим, что A=0 и B=0, тогда результат будет False. |
Логический Не | ! | Изменяет логическое состояние операндов. Если операнд False, то не операнд приведет к True. | Тогда предположим, что A = True! A даст False. |
4. Побитовые операторы
Эти операторы выполняют операции на двоичном уровне и дают результат в десятичном представлении.
Оператор | Символ | Описание | Пример |
Побитовое И | и | Увеличивает значение операнда на 1 | Предположим, что A = 10 и B = 20, тогда A и B дадут 2. А = 01010 (10) Б = 10100 (20) A&B = 00010 (2) |
Побитовое НЕ | ~ | Это бинарный оператор, он переворачивает биты операнда. | Предположим, что A = 10, тогда ~A даст 21. А = 01010 (10) ~A = 10101 (21) |
Сдвиг влево | << | Биты операнда в левой части оператора сдвига влево перемещаются влево в зависимости от значения операнда в правой части оператора сдвига влево. | Предположим, что A = 42 и B=2, тогда A< А = 00101010 (42) А<<В = 10101000 (49) |
Сдвиг вправо | >> | Биты операнда в левой части оператора сдвига вправо перемещаются вправо в зависимости от значения операнда в правой части оператора сдвига вправо. | Предположим, что A = 42 и B=2, тогда A>>B даст 10. А = 00101010 (42) А>>В = 00001010 (10) |