Чи є якийсь практичний трюк, щоб пам’ятати про різницю між великим ендіаном і малим ендіаном?


13

Я не працюю щодня з проблемами великих ендіанів та малих ендіанів, і тому мені важко запам'ятати, яка з них - що.

Нещодавно я отримав інтерв'ю з проханням про різницю між ними; оскільки я не пам’ятав, я вирішив «здогадатися» (зрештою, 50% шансів), але не зміг.

Отже, чи існує якийсь широко відомий практичний трюк, щоб пам’ятати, яка різниця між великим ендіаном і маленьким ендіаном?


10
Я тонкий kyou краще, щоб сказати, що таке ендіатизм, і кажу, що ви ніколи не можете згадати, в який бік це так, щоб ви завжди гуглили його
jk.

У мене теж проблеми з його запам'ятовуванням, і є занадто багато заплутаних мнемотехнічних хитрощів. Моя єдина надійна допомога - це накинути на Google заклинання витримки, щоб я отримав статтю у Вікіпедії .
mouviciel

3
Кумедний збіг обставин - я лише сьогодні натрапив на це посилання, і це напрочуд актуально commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
Nevermind

@Nevermind Я перестав читати цю статтю після другого абзацу. "Цікавить лише письменників-укладачів та людей, яким доводиться мати справу з пам'яттю, відображеною на регістри"? Окрім того, що це жахливе речення садового шляху , це означає, що код, який має справу з регістрами, є кращим випадком. Спробуйте використовувати комп’ютер колись без драйверів пристроїв.
dodgethesteamroller

Відповіді:


14

Я завжди думав, що це визначено неправильно, і це також порада його пам’ятати. Як мовець, який не є носієм англійської мови, я бачу "кінець" як протилежний "старту" (хоча, очевидно, "кінець" може означати будь-який кінець - початок кінця, або кінець кінця). У всякому разі, я просто пам'ятаю, що "це визначено неправильно" :)

  • У великому ендіані найзначніший (найбільший) байт знаходиться на початку .
  • У маленькому ендіані найменш значущий (найменший) байт знаходиться на початку .

Або, посилаючись на бітову витривалість :

  • 128 64 32 16 8 4 2 1 - великий ендіан, тому що закінчується мало.
  • 1 2 4 8 16 32 64 128 - мало ендіан, тому що закінчується великим.

Навіть незважаючи на те, що звичайне використання слова endianness стосується порядку упорядкування байтів у межах слова, його загальне значення стосується впорядкування індивідуально адресованих підкомпонентів у межах подання більшого елемента даних ( як пояснено у Вікіпедії ).


5
ах, але маленькі ендіанські ліліпути почали (тріснули) свої яйця на маленькому кінці, так що це правильний шлях
jk.

4
-1: Endian-ness посилається на байти всередині слова, а не на біти в байті.
kdgregory

1
@kdgregory - Зрештою, нумерація бітів впливає на слово. Ви пробували структури біт-поля у різних ендіанців? Я погоджуюся, що відповідь має помилковий характер.
mouviciel

@Kdgregory: Згідно з Вікіпедією , під термінами розуміється впорядкованість індивідуально адресованих підкомпонентів у межах подання більшого елементу даних. Ось загальний випадок. Існує також поняття бітової витривалості . Ви маєте рацію в тому, що найпоширеніша вживання ендіанізму стосується того, як байти впорядковуються в одному слові, і мої приклади, правда, не відображають цього. Перший приклад замінили на звичайний випадок.
Joonas Pulakaka

2
@kdgregory: З якого часу необхідне існування обладнання для обгрунтування теоретичних уявлень CS? Але дуже добре: 8051 має бітові адреси, що адресовані. Мова Ada дозволяє вказати відповідний порядок бітів для представлення типів даних ( pdf ). Порядок передачі бітів на послідовний носій, звичайно, повинен визначати бітову витривалість. Той факт, що звичайне вживання «ендіанства» стосується особливого випадку (байти словами), не приводить до недійсності його загального значення.
Joonas Pulakaka

33

Моя власна порада:

  • big endian = big-end першим! (перший байт (найнижча адреса) - MSB)
  • маленький ендіан = маленький кінець першим! (перший байт (найнижча адреса) - LSB)

3
Так, саме так я думаю про це: Великий Ендіан "Починається з великого кінця", а Маленький Ендіан "Починається з маленького кінця". Це як бейсбольна бита, є два кінці бити, один великий, другий маленький. Це дійсно не так важко з концепцією.
Шейн Кілкеллі

6

Найкращий спосіб запам'ятати це те, що цивілізовані народи шукають різноманітність і, отже, їдять свої яйця інакше, ніж вони упорядковують свою кількість. Поки ми пишемо десяткові цифри, починаючи спочатку з великих цифр (великий ендіан), ми їмо м'які варені яйця з маленького кінця (маленькі ендіани).


1
Ця відповідь здебільшого нетехнічна, але вона була абсолютно точною і змусила мене сміятися. Хороша робота.

6

Номери великого ендіану починаються з "великого кінця". Мало-ендіанські числа починаються з "маленького кінця".

І те, і інше - це натяк на питання про те, з чого почати їсти своє яйце, згідно з подорожами Гуллівера.

У цьому випадку "кінець" не є протилежною початку, він просто означає будь-яку крайність (мотузка | рядок | номер | послідовність), таким чином, їх не називають "великим фінішаном" або "маленьким фінішаном" (що, безумовно, було б протилежне "старту").


Справді. І найпростіший (і найвеселіший) спосіб запам’ятовування - сходити і читати «Подорожі Гуллівера». Я гарантую, що ти ніколи не забудеш, що знову!
Жуль

Ви повинні поставити "почати їсти" жирним шрифтом (також 72pt, <блимати>), ось це справді вся причина всієї плутанини тут.
T Nierath

2

Найпростіший спосіб мені запам'ятати - це змінити слово "ендіан" на "стартіан". Великі стартові цілі числа починаються з великого кінця (наприклад, найзначніші байти приходять першими), а маленькі старціальні цілі числа починаються з малого кінця (наприклад, найменше значущі байти приходять першими).


Не соромтесь вимовляти startian як /'stɑːr.ʃən/ або /'stɑːr.ti.ən/ (опустіть / r / для
неротичних

Це досить розумно і легко запам’ятати.
Coldblackice

1

Я ніколи не міг згадати, що таке "big-endian", а що "little-endian", але я знав, що це виграшність процесорів PowerPC та Intel x86. Мало що має більшість букв спільного з Intel, тому Intel x86 є малопомітним.

Звичайно, це корисно лише в тому випадку, якщо ви знаєте порядок байтів PPC та x86. З іншого боку, вам слід пам’ятати, що Intel x86 = маленький ендіан. І пам’ятайте, що x86 і ARM дуже, дуже сумісні навіть із абсолютно різними наборами інструкцій.


1

Я б сказав так: Великий прекрасний!

Великий == красивий == правильний.
Правильна ендіазність - це та, яку ви можете прочитати в шістнадцятковій точці. Це перший, який ставить найзначніший байт на перше місце, як це робить будь-який здоровий чоловік.

Мало == потворно == неправильно.
Шестнадцяткові випромінювання, спричинені цією ендіатичністю, просто настільки неправильні, що ти втікаєш, кричачи "Мозок!". Можливо, це якась чужа гидота, ми можемо лише міркувати про походження цієї жорстокості. Тим не менш, воно існує, і ми до цього застрягли.

Пітті, не завжди найкращий варіант робить гонку ...


Little == ugly == wrong... "Навіть найменша людина може змінити хід майбутнього" -Galadrial, LOTR
Coldblackice

-1

У великому ендіані: (Зростання порядку)

Низький до високого, тобто

0 | 1 | 2 | 3 ^ ^ Початок кінця

Маленьким Ендіаном: (У порядку зменшення)

Високий до низького

тобто

3 | 2 | 1 | 0 ^ ^ Початок кінця


1
У запитанні було запропоновано практичну хитрість згадати, яку саме.
gnasher729
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.