Порядок байтов

Если значение не помещается в один байт, а в ARM Cortex-M оно не помещается, то имеет значение, в каком порядке эти байты хранятся и передаются. Часто выбор порядка следования обусловлен только соглашениями. Всего общепринятых способа три.

  • От старшего к младшему (англ. big-endian, большим концом) соответствует привычному порядку записи арабских цифр, например, двести пятьдесят пять — 255. Такой порядок использовался в процессоре Motorola 68k, отсюда второе название — порядок байтов Motorola (англ. Motorola byte order). Третье название — «сетевой порядок байтов» (англ. network byte order), так как используется в протоколе TCP/IP.
  • От младшего к старшему (англ. little-endian, малым концом) соответствует обратному порядку записи: число двести пятьдесят пять можно записать как 552. Такой порядок принят в памяти персональных компьютеров на базе процессоров x86, вследствие чего часто называется интеловским порядком байтов. Также он принят в USB. В первом байте лежат младшие разряды (младшие 8 бит), во втором более старшие и т.д.
  • Смешанный порядок (англ. middle-endian) иногда используется для представления чисел, длина которых в байтах превышает машинное слово. В процессорах ARM для представления числа с плавающей запятой (double, 64 бита) используется именно такой порядок.

Ядро в выбранном микроконтроллере работает с little-endian. Существует еще два важных термина — это MSB (англ. most significant bit, старший бит) и LSB (англ. least significant bit, младший бит). Их расположение приведено ниже.


Изменено: