byte

Тип byte хранит 8-битное беззнаковое целое от 0 до 255, занимает 1 байт памяти и удобен для работы с цветом, регистрами и данными от Serial.read().

Полная статья

Описание

Тип byte представляет собой 8-битное беззнаковое целое число. Он занимает ровно один байт памяти и может хранить значения от 0 до 255 — не больше и не меньше. Если присвоить переменной типа byte значение вне этого диапазона, произойдёт переполнение: число «обернётся» по модулю 256. Например, 256 превратится в 0, а 257 — в 1.

Этот тип удобен везде, где нужно работать с небольшими неотрицательными числами и при этом важно экономить оперативную память — особенно актуально для плат с ограниченным объёмом RAM, таких как Arduino Uno или Nano.

Синтаксис

byte var = val;

Параметры

  • var: имя переменной — произвольный идентификатор, по которому вы будете обращаться к значению в коде.
  • val: начальное значение переменной — целое число от 0 до 255. Можно указать как десятичное, так и шестнадцатеричное или двоичное значение, например 0xFF или B11111111.

Где применяется

  • Работа с цветом. Каждый канал RGB-цвета (красный, зелёный, синий) принимает значения 0–255, поэтому byte — естественный выбор для хранения компонентов цвета.
  • Приём данных по Serial. Функция Serial.read() возвращает один байт из буфера; удобно сохранять результат в переменную типа byte.
  • Индексы и счётчики. Если счётчик цикла или индекс массива заведомо не превысит 255, byte экономит память по сравнению с int.
  • Работа с регистрами и битовыми масками. При манипуляциях с отдельными битами 8-битный тип точно соответствует размеру аппаратного регистра.

Практические замечания

  • byte — беззнаковый тип. Если вам нужны отрицательные числа, используйте int или int8_t.
  • При арифметических операциях с byte результат может автоматически повышаться до int. Если важен именно 8-битный результат, явно приводите его обратно: (byte)(a + b).
  • Переполнение происходит молча — компилятор не предупредит, если значение выйдет за пределы 0–255. Проверяйте диапазон входных данных самостоятельно.
  • На всех платах Arduino тип byte занимает ровно 1 байт, в отличие от int, который занимает 2 байта. В массивах большого размера разница ощутима.
  • byte является псевдонимом для uint8_t — стандартного типа из <stdint.h>. Оба варианта взаимозаменяемы в коде Arduino.

Полезные материалы