Порядок байтов, постоянный источник конфликтов на протяжении десятилетий

Порядокбайтовпостоянныйисточникконфликтовнапротяжениидесятилетий

Байт Порядок байтов в компьютерах был постоянным источником конфликтов на протяжении десятилетий. Но есть ли у одного явное преимущество перед другим? Давайте исследуем вместе!

Термины «Little Endian» и «Big Endian» взяты из 1980 роман «Путешествие Гулливера». В нем рассказывается о долгой борьбе, завершившейся великой и дорогостоящей войной между империями «Лилипутии» и «Блефуску» из-за разногласий по поводу того, какой конец вареного яйца разбить для еды. «Big-Endians» присоединились к двору императора Блефуску, а «Little-Endians» присоединились к лилипутскому.

Условия были адаптированы. для информатики в 20345 Дэнни Коэна в заметке об эксперименте в Интернете под названием «О священных войнах и Призыв к миру », описывающий конфликт из-за различных способов организации битов и байтов в памяти как компонентов больших типов данных. Для данных, ориентированных на байты, «Little Endian» помещает младший байт значения в младший адрес, а «Big Endian» помещает старший байт в младший адрес.

+ 0 + 1 + 2 + 3
Big Endian 0xDE

0xAD 0xBE 0xEF
Little Endian 0xEF 0xBE 0xAD 0xDE

У обоих подходов есть свои приверженцы, и вспыхнуло множество пламенных войн, когда конкурирующие архитектуры ЦП, форматы данных и протоколы боролись за превосходство. .

Самый распространенный аргумент в пользу порядка прямого байта в компьютерах – то, что он соответствует «естественному порядку» для записи чисел. Это упрощает чтение чисел в шестнадцатеричном дампе и снижает когнитивную нагрузку в целом, когда люди просматривают закодированные данные. Но как именно возник этот «естественный порядок»?

Истоки нашей системы нумерации

Наша современная система нумерации уходит корнями в Индийская система нумерации, которая была изобретена где-то между 1 и 4 веками. Как и в господствовавшей в то время системе письма, числа писались справа налево, а цифры с меньшими значениями отображались в крайних правых позициях (то есть в системе нумерации с прямым порядком байтов).

Эта система счисления получила дальнейшее развитие в индуистско-арабскую десятичную систему примерно в 7 веке и распространилась по арабскому миру, была принята в арабскую математику к 9 веку, а затем введена в Европу через Северную Африку в 16 й век.

Хотя в европейских языках использовались сценарии с написанием слева направо, числовой порядок слева направо сохранялся для обеспечения совместимости с существующими математическими текстами и документами (произошло то же самое. когда Индия перешла на сценарий слева направо). В Европе и Индии числа записывались с прямым порядком байтов, а в арабских странах оставались строчными. Большая часть Азии представляла собой смесь, в конечном итоге остановившуюся на обратном порядке байтов.

Таким образом, наша концепция «естественного» порядка байтов оказывается культурной. артефакт, возникший в результате проблемы обратной совместимости при использовании системы письма слева направо или сверху вниз.

Последствия порядка байтов в системе нумерации

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

Рассмотрим следующий список чисел:

  5559381 5559381 67526634 594 2 54302 ^ Цифра «Единицы»   

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

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

Обратите внимание, как мне пришлось использовать предварительно отформатированный раздел с моноширинным шрифтом, чтобы я мог добавить кучу пробелов для выравнивания чисел правильно!

В системе письма с письмом справа налево цифры «единицы» будут выровнены по краю (справа) и вырастет наружу (слева) в свободное пространство. Чтобы лучше это представить, обратите внимание на цифры, отображаемые для читателей слева направо:

  5559381 54302 
594 2 84734 ^ " Единичная цифра