В программировании и информатике все данные сохраняются в определенных единицах. Они будут обрабатываться операционной системой особым образом. Зная об измерении данных, а также о так называемом «порядке байт», разработчик сможет оптимизировать функционирование программного продукта.

Далее предстоит разобраться с тем, как обрабатывается информация. Необходимо выяснить возможные варианты и их особенности. Предложенная статья ориентирована на широкую публику. Представленные сведения будут одинаково полезны как программистам, так и системным администраторам. Они также могут показаться интересными «рядовым» пользователям ПК.

Единицы измерения

В компьютерах вся информация измеряется определенным образом. Исторически сложилось так, что минимальной единицей количества данных является бит. Этот термин произошел от английского сокращения bit или binary digit. Дословно соответствующее слово переводится как «двоичная цифра».

Бит – количество информации, которого достаточно для установки различий между двумя явлениями с одинаковой долей вероятности. Им можно интерпретировать одно из двух понятия:

  • 0 – верно, включено, да;
  • 1 – неверно, отключено, нет.

Бит – наименьшая единицы счисления данных. Чаще разработчики пользуются более «крупными» мерами. А именно – байтами. Один байт включает в себя 8 бит.

Байты и биты: что нужно знать об их порядке

Выше можно увидеть таблицу, которая поможет понять, как переводить более крупные единицы измерения имеющиеся информационные единицы.

Об истоках появления байтового порядка

Порядок байтов (или «endian») – важный элемент, оказывающий влияние на работу IT-инженеров и программного обеспечения. Соответствующий компонент не является отдельным термином. Изучая порядок байтов, необходимо обратить внимание на такие определения как «прямой порядок» (big-endian) и «обратный порядок» (little-endian).

Подобные понятия были взяты из книги «Путешествия Гулливера». В ней начинается гражданская война между теми, кто предпочитает разбивать вареные яйца на большом конце (big endians), а также теми, кто предпочитает делать это на маленьком конце (little endians).

В 1980 году некий Денни Коэн, специалист по компьютерам из Израиля, написал статью, в которой он раскрыл вопрос относительно правильного порядка байтов в сообщениях. В своем творении автор связал тематику с «войной», описанной в «Гулливере».

Для описания дискуссий о байтовом порядке (endianness) использовались термины «big endian» и «little endian».

Определение

Современная вычислительная техника и цифровые системы связи представляют чаще всего информацию в виде последовательности. Она формируется из байтов. Если число не может быть реализовано в качестве одного байта, имеет смысл, в каком порядке они записываются на устройстве, а затем передаются по линиям связи. Данный момент сказывается на скорости и качестве обработки материалов.

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

Актуальность и важность

Сатирическая трактовка в сравнении с произведением «Путешествия Гулливера» big endians (прямой порядок, от старшего к младшему) против little endians (обратного порядка, от младшего к старшему), рассматриваемый вопрос имеет важность для работы с информацией и документами.

Здесь рекомендуется запомнить следующие значимые аспекты:

  1. Блок цифровой информации представляет собой последовательность из нулей и единиц.
  2. Соответствующие единицы и нули начинаются с наименьшего значащего бита (least significant bit, LSb). Заканчиваются они на наибольшем значащем бите (most significant bit, MSb).
  3. 32-разрядный процессор передает 32 бита информации в 32 блока памяти. 64-разрядный – в 64 соответственно.

Чтобы лучше понять, в чем заключается смысл порядка байтов, рекомендуется изучить простейший пример. В нем дан 32-разрядный процессор. Он будет передавать информацию в 32 информационных блока памяти. Им совместно назначается тот или иной адрес. Пример – 0x01. Шина данных в системе создана так, что смешивать LSb и MSb нельзя. Все операции устройства будут использовать 32-битные данные, даже если соответствующие числа могут быть с легкостью реализованы в 16 или 8 битами.

Каждый раз, когда процессор должен получить доступ к сохраненной информации, он просто считает 32 бита из адреса памяти 0x01. Соответствующая концепция является надежной. В порядке байтов нет необходимости.

Рассматриваемый процесс был основан на работе битов. «Байт» не упоминалось. Процессы базируются на 32-битных данных. Делить их на байты не требуется. Реальные цифровые системы, работающие с 32-битными и 64-битными материалами, обычно используют 8-битный сегмент данных. Он известен в информационных технологиях как «байт».

Как на устройстве распределяются байты памяти

Удобное средство демонстрации порядка байтов в действии – это процесс хранения цифровой информации. Пример – используется 8-разрядный микроконтроллер. Все аппаратное обеспечение на устройстве, включая ячейки памяти, предназначаются для работы с 8-битными данными. Адрес 0x00 может включать в себя всего один байт, адрес 0x01 – тоже один и так далее.

Байты и биты: что нужно знать об их порядке

Схема, представленная выше, демонстрирует 11 байтов памяти. Каждая из них хранит всего по 8 бит информации.

Для программирования микроконтроллера, пользуясь компилятором C, порядок байтов будет иметь особую роль. Компилятор должен определить 32-разрядные переменные и хранить их в смежных ячейках памяти. В самом младшем адресе памяти должен хранить наибольший значащий байт (MSB) или наименьший значащий байт (LSB).

Это приводит к тому, что системы могут работать по двум принципам:

  • соблюдая порядок имеющихся байтов big endian – распределение байтов от старшего к младшему;
  • по принципу little endian – от младшего к старшему.

Какой именно вариант правильно использовать, ответить проблематично. Связано это с тем, что любая договоренность может быть одинаково эффективной. Решения между прямым и обратным порядком байтов может базироваться на различных факторах. Пример – на поддержке совместимости с предыдущими версиями процессора.

Кроме прямого и обратного порядка распределения информации есть еще «гибридный» подход. Он не так распространен, но встречается на практике в современных технологиях.

Обратный порядок

Обратный порядок информационных байтов – это принцип «от младшего к старшему». Он называется little endian. Это порядок, обратный «привычному» порядку записи чисел арабскими цифрами. Пример – число 123 было бы записано как 321. Принцип распределения и записи информации здесь будет производиться по правилу «справа–налево».

Обратный порядок информационных байтов является стандартом компьютеров с процессорами архитектуры x86 (Intel и других). Из-за этой особенности концепция иногда называется «интеловским порядком). Современные процессоры x86 дают возможность работать с операндами, рассчитанными на bites:

  • один;
  • два;
  • четыре;
  • восемь.

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

Кроме архитектуры x86 от Intel соответствующий принцип распределения информации активно используется в VAX-архитектурах (VAX byte order), а также в DEC Alpha и многих других.

Байты и биты: что нужно знать об их порядке

Принцип обратного порядка байтов (little endian) применяется в PCI, USB, таблице разделов GUID. Он является рекомендованным принципом FidoNet. Данное соглашение поддерживает меньше кроссплатформенных протоколов и форматов данных, чем прямой порядок байт.

Прямой порядок

Следующий вариант распределения информации в битовых системах – «напрямую». Он называется прямым порядком байтов, big Indian. Он называется «от старшего к младшему». Является классической формой записи. Порядок следования – «слева–направо». Пример – число «сто двадцать пять» будет записано как 125. В этом же ключе необходимо осуществлять запись битов (байтов) в технической и учебной литературе, если иные особенности операций не указаны.

Принцип записи «всегда вперед» или «от большего к меньшему» – стандарт, который используется в Сети. Он иногда называется «network byte order». Встречается в:

  • протоколах TCP/IP;
  • заголовках пакетов данных;
  • в большинстве протоколов более высокого уровня, которые необходимо использовать поверх TCP/IP.

Такая последовательность байтов в основном задействована в процессорах IBM 360/370/390, SPARC, Motorola 68000. Из-за соответствующей особенности есть второй способ обозначения соглашения – «Motorola byte order).

Байты и биты: что нужно знать об их порядке

Правильный принцип использования порядка распределения байтов big endian – сравнение строк (пример – с целыми числами и целочисленными полями-частями большей разрядности, каждое из которых поддерживает сразу несколько символов.

Данное соглашение используется в различных файловых форматах. Примеры – JPEG, FLV, PNG.

Переключаемый

Какой порядок байт в Intel, понятно. Обе рассмотренные концепции примерно равны между собой. Поэтому иногда бывает трудно указать, какой стандарт правильный для поставленной в разработке задачи.

Некоторые процессоры могут функционировать сразу по обеим концепциям. Сюда относят:

  • ARM;
  • PowerPC;
  • DEC Alpha;
  • IA-64;
  • PA-RISC;
  • MIPS.

Последовательность байтов будет выбираться программно во время установки операционной системы. Иногда он настраивается за счет перемычек на материнских платах. Иногда данную концепцию называют big-endian.

Смешанный

Следующий вариант – гибридный или смешанный порядок байтов. Называется middle endian. Он используется при работе с числами, длина которых больше машинного слова. Число будет представлено некоторой последовательностью машинных слов. Они записываются в формате, естественном для выбранной архитектуры. Сами машинные слова следуют в обратном порядке.

Смешанный порядок байтов встречается в процессорах VAX и ARM. В основном концепция задействована при работе с длинными вещественными числами.

Пример

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

Байты и биты: что нужно знать об их порядке

Здесь описано размещение 4-байтового числа в памяти устройства, доступ к которому поддерживается побайтно и по 32-разрядному слову. Все числа представлены в 16-ричной системе счисления.

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!