Little Endian против Big Endian?
У меня проблемы с обертыванием головы на двоих. Я понимаю, как изобразить что-то в формате big endian.
Например -12 это 1111 1111 1111 0100
Но почему порядковое представление с младшим порядком байтов 1111 0100 1111 1111 вместо 0100 1111 1111 1111?
3 ответа
Порядковый номер порядка байтовых адресов. Little endian означает, что младшие байты получают младшие адреса. Big endian означает наоборот. Так что речь идет о байтах (8-битных порциях), а не обрывках (4-битных порциях). Большинство компьютеров, которые мы используем (есть несколько исключений), адресные байты на уровне одного адреса.
Принимая -12
пример:
Little endian, в памяти, будет:
000000: F4
000001: FF
Память с прямым порядком байтов в памяти будет такой:
000000: FF
000001: F4
Little endian в основном меняет порядок байтов на многобайтовое значение
1111 1111 1111 0100
2 байта, где 1111 1111
это первый байт и 1111 0100
это второй байт. В порядке байтов, второй байт читается первым, поэтому окончательное представление 1111 0100 1111 1111
Цель big-endian - печатать шестнадцатеричные числа на экранах компьютеров слева направо, чтобы их было легче читать программистам низкого уровня или начинающим программистам; другими словами, поскольку шестнадцатеричный код распечатывается с низкого адреса памяти на верхний, он переворачивается, если вы не измените его в программном обеспечении. Цель Little-endian состоит в том, чтобы не быть гайкой и не оставлять байты в последовательном порядке, чтобы вы не выполняли дополнительную работу для разработчиков и вместо этого заставляли ОЧЕНЬ ограниченное количество людей, которым небезразлично, переворачивать байты в программном обеспечении!
НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ никогда не использовать big-endian. Сегодня процессоры с двойным порядком байтов и могут работать как с прямым, так и с младшим порядком байтов, поэтому, если вы не взаимодействуете с устаревшим оборудованием, почти вся индустрия использует технологию с прямым порядком байтов, а программирование с прямым порядком байтов было запланировано полностью прекращено разработчиками.
Little-Endian без форматирования программного обеспечения
In RAM Printed
+----+ 0x01000000
0x4 | 00 |
| 00 |
| 00 |
0x0 | 01 |
+----+
Big-Endian без форматирования программного обеспечения
In RAM Printed
+----+ 0x00000010
0x4 | 01 |
| 00 |
| 00 |
0x0 | 00 |
+----+
Little-Endian с программным форматированием
In RAM Printed
+----+ 0x00000010
0x4 | 00 |
| 00 |
| 00 |
0x0 | 01 |
+----+
Происхождение Endian
Слово Эндиан на самом деле является древним аборигенным племенем Северной Америки. Я не могу точно вспомнить, как проходила история, поэтому, пожалуйста, оставляйте комментарии, заполняя дыры, но история такова, что два племени эндианов были вовлечены в семейную вражду из-за чего-то глупого, и в конечном итоге причина, по которой они враждовали, давно исчезла, но они все еще боролись только потому, что все еще были безумны.
Это бананы!
Термин бананы относится к известному ненаучному исследованию, предположительно проведенному с обезьянами. "Ученые" поставили лестницу в комнату с кучей обезьян и поставили бананы наверху лестницы. Если какая-либо из обезьян попыталась подняться по лестнице, подлые ученые опрыснули бы всех обезьян водой. Обезьяны научились избивать любых обезьян, которые пытались подняться по лестнице, чтобы спастись от распыления. В конце концов, ученые прекратили распылять обезьян, но обезьяны продолжали избивать любого, кто пытался подняться по лестнице. Самое смешное в этой истории то, что кто-то только что придумал. Это то, что это означает, когда что-то полностью бананов, таких как война с наркотиками.
Надо признать, что если вы опрыскиваете обезьян пожарным шлангом, есть большая вероятность, что история окажется правдой, потому что оригинальная история не причиняла достаточно боли, чтобы преодолеть любовь обезьян к бананам, но кажется, что настоящие ученые не так уж злы.
Чтобы точно увидеть, что такое Banans Big-endian, давайте посмотрим на происхождение Big-Endian. Еще на заре микропроцессоров, когда они все еще делали маски и машины вручную, компания Motorola кратко обнаружила, что в то время было проще использовать метод с прямым порядком байтов. В то время процессоры Motorola были самыми быстрыми, и они разработали прочно укоренившийся лагерь Big-Endianers. Вскоре после того, как они уменьшили размер интегральных микросхем, это повышение производительности стало неактуальным, и современные процессоры теперь имеют двойную последовательность и могут менять последовательность после загрузки. Это идентично отражало бы историю о бананах. Кто-то что-то не так понял, это стало популярным среди людей, которые не знают, что они делают, и теперь логика - ПОЛНОСТЬЮ БАНАНЫ!!! #DeleteBigEndian