У меня возникают проблемы, обертывающие мою голову на двух. Я понимаю, как представлять что-то в большом endian.
Например, -12 - 1111 1111 1111 0100
Но почему представление маленького конца 1111 0100 1111 1111 вместо 0100 1111 1111 1111?
У меня возникают проблемы, обертывающие мою голову на двух. Я понимаю, как представлять что-то в большом endian.
Например, -12 - 1111 1111 1111 0100
Но почему представление маленького конца 1111 0100 1111 1111 вместо 0100 1111 1111 1111?
Endianness - это порядок следования байтов. 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 |
+----+
In RAM Printed
+----+ 0x00000010
0x4 | 01 |
| 00 |
| 00 |
0x0 | 00 |
+----+
In RAM Printed
+----+ 0x00000010
0x4 | 00 |
| 00 |
| 00 |
0x0 | 01 |
+----+
Слово Эндиан на самом деле является древним аборигенным племенем Северной Америки. Я не могу точно вспомнить, как проходила история, поэтому, пожалуйста, оставляйте комментарии, заполняя дыры, но история в том, что два племени эндианов были вовлечены в семейную вражду из-за чего-то глупого, и в конечном итоге причина, по которой они враждовали, давно исчезла, но они все еще боролись только потому, что все еще были безумны.
Термин бананы относится к известному ненаучному исследованию, предположительно проведенному с обезьянами. "Ученые" поставили лестницу в комнату с кучей обезьян и поставили бананы наверху лестницы. Если какая-нибудь из обезьян попытается подняться по лестнице, подлые ученые опрыскивают всех обезьян водой. Обезьяны научились избивать любых обезьян, которые пытались подняться по лестнице, чтобы спастись от распыления. В конце концов, ученые прекратили распылять обезьян, но обезьяны продолжали избивать любого, кто пытался подняться по лестнице. Самое смешное в этой истории то, что кто-то только что придумал. Это то, что это означает, когда что-то полностью бананов, таких как война с наркотиками.
Надо признать, что если вы опрыскивали обезьян пожарным шлангом, есть большая вероятность, что эта история окажется правдой, потому что оригинальная история не причинила достаточно боли, чтобы преодолеть обезьянью любовь к бананам, но кажется, что настоящие ученые не так уж и плохи.
Чтобы точно увидеть, что такое Banans Big-endian, давайте посмотрим на происхождение Big-Endian. Еще на заре микропроцессоров, когда они все еще делали маски и машины вручную, компания Motorola кратко обнаружила, что в то время было проще использовать метод с прямым порядком байтов. В то время процессоры Motorola были самыми быстрыми, и они разработали прочно укоренившийся лагерь Big-Endianers. Вскоре после того, как они уменьшили размер интегральных микросхем, это увеличение производительности стало неактуальным, и современные процессоры теперь имеют двойную последовательность и могут менять последовательность после загрузки. Это идентично отражало бы историю о бананах. Кто-то что-то не так понял, это стало популярным среди людей, которые не знают, что они делают, и теперь логика - ПОЛНОСТЬЮ БАНАНЫ !!! #DeleteBigEndian