Интернет магазин китайских планшетных компьютеров



Компьютеры - Порядок байтов

23 января 2011


Оглавление:
1. Порядок байтов
2. Проблемы совместимости
3. Вещественные числа
4. Интересные факты



метод записи байтов многобайтовых чисел в информатике.

В общем случае, для представления числа, большего 255) приходится использовать несколько байтов. При этом число M записывается в позиционной системе счисления по основанию 256:

M = \sum_{i=0}^{n}A_i\cdot 256^i=A_0\cdot 256^0+A_1\cdot 256^1+A_2\cdot 256^2+\dots+A_n\cdot 256^n.

Набор целых чисел A_0,\dots,A_n, каждое из которых лежит в интервале от 0 до 255, является последовательностью байтов для записи M.

Варианты записи

Порядок от старшего к младшему

Порядок от старшего к младшему или: A_n,\dots,A_0, запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байтов от старшего к младшему часто называют сетевым порядком байтов. Этот порядок байтов используется процессорами IBM 360/370/390, Motorola 68000, SPARC.

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

Порядок байтов от старшего к младшему применяется во многих форматах файлов — например, PNG, FLV, EBML.

Порядок от младшего к старшему

Порядок от младшего к старшему или, о происхождении термина ниже): A_0,\dots,A_n, запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем иногда его называют интеловский порядок байтов. В некоторых кругах используется название англ. VAX order, например, в документации Perl.

В противоположность «тупоконечному» порядку, меньше кросс-платформенных протоколов и форматов данных с «остроконечным» порядком байт; заметные исключения: USB, конфигурация PCI, таблица разделов GUID, рекомендации FidoNet.

Переключаемый порядок

Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC, DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байтов выбирается программно во время инициализации операционной системы, но может быть выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байтов операционной системы. Переключаемый порядок байтов иногда называют англ. bi-endian.

Смешанный порядок

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

Классический пример middle-endian — представление 4-байтных целых чисел на 16-битных процессорах семейства PDP-11. Для представления двухбайтных значений использовался порядок little-endian, но 4-хбайтное двойное слово записывалось от старшего слова к младшему.

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

Пример

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

Все числа записаны в 16-ричной системе счисления.

Число: 0xA1B2C3D4
Представление D4*0x01 + C3*0x100 + B2*0x10000 + A1*0x1000000
Порядок от младшего к старшему 0xD4, 0xC3, 0xB2, 0xA1
Порядок от старшего к младшему 0xA1, 0xB2, 0xC3, 0xD4
Порядок, принятый в PDP-11 0xB2, 0xA1, 0xD4, 0xC3

Сравнение

Размещение байтов слова в памяти Big-endian и Little-endian ЭВМ

Существенным достоинством little-endian по сравнению с big-endian порядком записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байт. Так, если в ячейке памяти содержится число 0x00000022, то прочитав его как int16 мы получим число 0x0022, прочитав один байт — число 0x22. Однако, это же может считаться и недостатком, потому что провоцирует ошибки потери данных.

Обратно, считается что у little-endian, по сравнению с big-endian есть «неочевидность» значения байтов памяти при отладке на самом деле значит 0xD4C3B2A1, для big-endian эта последовательность читалась бы «естественным» для арабской записи чисел образом: 0xA1B2C3D4). Наименее удобным в работе считается middle-endian формат записи; он сохранился только на старых платформах.

Для записи длинных чисел обычно предпочтительнее порядок слов в числе little-endian. Порядок байтов в слове — обычный для данной архитектуры.



Просмотров: 4624


<<< Порт (компьютер)