Big-endian ve little-endian arasındaki farkı hatırlamak için pratik bir hile var mı?


13

Her gün big-endian ve little-endian problemleriyle çalışmıyorum ve bu yüzden hangisinin ne olduğunu hatırlamakta zorlanıyorum.

Son zamanlarda ikisi arasındaki farkı soran bir röportaj aldım; hatırlamadığım için "tahmin etmeye" karar verdim (sonuçta% 50 şans) ama başaramadım.

Yani, büyük endian ve küçük endian arasındaki farkın ne olduğunu hatırlamak için bilinen herhangi bir pratik hile var mı?


10
Endianess'in ne olduğunu belirten ve her zaman google
jk.

Ben de hatırlamakta sorun yaşıyorum ve kafa karıştırıcı mnemoteknik numaralar var. Tek güvenilir yardımım, Wikipedia makalesini almak için google'da endianness büyüsünü kullanmak .
mouviciel

3
Komik tesadüf - Bugün sadece bu bağlantıda tökezledim ve şaşırtıcı derecede alakalı commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
Nevermind

@Nevermind İkinci paragraftan sonra bu makaleyi okumayı bıraktım. "Sadece derleyici yazarlar ve kayıtlara eşlenmiş hafıza ile uğraşmak zorunda olanlar için ilgi"? Bu korkunç bir bahçe yolu cümlesinin yanı sıra, kayıtlarla ilgilenen kodun bir uç dava olduğunu ima ediyor. Bir zamanlar aygıt sürücüsü olmadan bir bilgisayar kullanmayı deneyin.
dodgethesteamroller

Yanıtlar:


14

Her zaman yanlış şekilde tanımlandığını düşünmüştüm ve bu da hatırlamanın ipucu. Anadili İngilizce olmayan biri olarak "end" i "start" ın tersi olarak görüyorum (açıkçası "end" her iki uç da olabilir - başlangıç ​​sonu veya bitiş sonu). Her neyse, sadece "yanlış şekilde tanımlanmış" olduğunu hatırlıyorum :)

  • Büyük endian'da en önemli (en büyük) bayt başlangıçtadır .
  • Biraz yılında endian , en önemsiz (küçüğü) bayt olduğunu baştan .

Veya, bit endianitesine atfen :

  • 128 64 32 16 8 4 2 1 büyük endian, çünkü az bitiyor.
  • 1 2 4 8 16 32 64 128 küçük bir endian, çünkü büyük olanla bitiyor.

Endianness sözcüğünün olağan kullanımı, bir kelimenin içindeki baytların nasıl sıralandığını ifade etse de , genel anlamı daha büyük bir veri öğesinin ( Wikipedia'da açıklandığı gibi ) temsili içinde ayrı ayrı adreslenebilir alt bileşenlerin sıralanması anlamına gelir .


5
ahh, ama küçük endian lilliputianları yumurtalarını küçük uçtan başlattılar (çatladılar), bu yüzden doğru yol
jk.

4
-1: Endian-ness, bir bayt içindeki bitleri değil, bir kelimenin içindeki baytları ifade eder.
kdgregory

1
@kdgregory - Sonunda, bir sözcük içinde bit numaralandırması etkilenir. Bit alan yapılarını farklı endians arasında denediniz mi? Yine de cevabın yanlış olduğunu kabul ediyorum.
mouviciel

@Kdgregory: Wikipedia'ya göre endianness , daha büyük bir veri öğesinin temsili içinde tek tek adreslenebilen alt bileşenlerin sırasını ifade eder. Bu genel durum. Ayrıca biraz endianite kavramı var . Endianitenin en yaygın kullanımının, bir kelimenin içinde baytların nasıl sıralandığına atıfta bulunduğundan ve örneklerimin itiraf etmediğinden haklısınız . İlk örneği ortak vaka ile değiştirdi.
Joonas Pulakka

2
@kdgregory: CS teorik kavramlarını haklı çıkarmak için donanımın varlığı ne zamandan beri gereklidir? Ama çok iyi: 8051'de bit adresli kayıtlar var. Ada dili, veri türü gösterimi ( pdf ) için uygun bit sırasının belirlenmesine izin verir . Seri bir ortam üzerindeki bitlerin iletim sırasının elbette bit endianitesini tanımlaması gerekir. Aslında her zamanki "endian" kullanılması özel bir durum anlamına gelir (yani bayt) kendi genel bir anlam geçersiz kılmaz.
Joonas Pulakka

33

Kendi ipucum:

  • big endian = önce big-end! (ilk bayt (en düşük adres) MSB'dir)
  • küçük endian = önce küçük uç! (ilk bayt (en düşük adres) LSB'dir)

3
Evet, ben böyle düşünüyorum: Büyük Endian "BÜYÜK ucundan başlar", Küçük Endian "Küçük ucundan başlar". Bir beysbol sopası gibi, yarasanın iki ucu var, biri büyük, diğeri küçük. Gerçekten bu kadar zor bir kavram değil.
Shane Kilkelly

6

Bunu hatırlamanın en iyi yolu, uygar halkların çeşitliliği araştırması ve dolayısıyla yumurtalarını sayılarını sipariş ettiklerinden farklı şekilde yemesidir. İlk önce büyük basamaklardan başlayarak ondalık basamaklar yazarken (büyük endian), küçük uçtan (küçük endian) yumuşak haşlanmış yumurta yeriz.


1
Bu cevap çoğunlukla teknik değildir, ancak tamamen doğruydu ve beni güldürdü. Aferin.

6

Big-endian sayıları "big end" de başlar. Küçük endian sayıları "küçük sonda" başlar.

Her ikisi de Gulliver'in Seyahatleri'ne göre yumurtalarınızı nerede yemeye başlayacağınız konusunda bir yanılsamadır.

Bu durumda, "son" başlangıcın tersi değildir, sadece (ip | dize | sayı | sıra) herhangi bir uç anlamına gelir, bu nedenle "büyük bitirmek" veya "küçük bitirmek" olarak adlandırılmamalıdır (kesinlikle "başlat" ın tersi).


Aslında. Ve hatırlamanın en kolay (ve en eğlenceli) yolu Gulliver'in Seyahatlerini okumak ve okumaktır. Hangisini bir daha asla unutmayacağınızı garanti ediyorum!
Jules

"Yemeye başla" yı kalın harflerle yazmalısınız (ayrıca 72pt, <blink>), buradaki tüm karışıklığın nedeni budur.
T Nierath

2

Hatırlamamın en kolay yolu “endian” kelimesini “startian” olarak değiştirmek. Büyük startian tamsayıları büyük uçla başlar (örneğin en önemli bayt önce gelir) ve küçük startian tamsayıları küçük uçla başlar (örneğin en az önemli baytlar önce gelir).


Startian as /'stɑːr.ʃən/ veya /'stɑːr.ti.ən/ ( rhotic olmayan aksanlar için / r / 'ı
atlayın

Bu oldukça akıllı ve hatırlaması kolay.
Coldblackice

1

Hangisinin "big-endian" hangisinin "little-endian" olduğunu hatırlayamadım ancak PowerPC ve Intel x86 işlemcilerin endianitesini biliyordum. Küçük harflerin çoğu Intel ile ortaktır, bu nedenle Intel x86 küçük endian'dır.

Tabii ki bu sadece PPC ve x86'nın bayt sırasını biliyorsanız faydalıdır. Öte yandan, Intel x86 = little-endian olduğunu hatırlamanız gerekir. Ve x86 ve ARM'nin tamamen farklı komut setleriyle bile çok, çok uyumlu olduğunu unutmayın.


1

Ben şöyle ifade ederim: Büyük güzeldir!

Büyük == güzel == doğru.
Doğru endianess, herhangi bir aklı başında insanın yaptığı gibi en önemli baytı ilk koyan heksdump'ta okuyabileceğinizdir.

Küçük == çirkin == yanlış.
Bu endianess tarafından üretilen hexdumps o kadar basit yanlış ki "Brains!" Belki bu bir tür yabancı iğrençliktir, sadece bu vahşetin kökenine spekülasyon yapabiliriz. Bununla birlikte, var ve biz onunla sıkışıp kaldık.

Pitty, her zaman yarışı yapan en iyi varyant değil ...


Little == ugly == wrong... "En küçük kişi bile geleceğin seyrini değiştirebilir" -Galadrial, LOTR
Coldblackice

-1

Büyük endian'da: (Artan düzen)

Düşükten yükseğe yani

0 | 1 | 2 | 3 ^ ^ Başlangıç ​​Sonu

Little Endian'da: (Azalan düzende)

Yüksekten alçağa

yani

3 | 2 | 1 | 0 ^ ^ Başlangıç ​​Sonu


1
Soru, hangisini hatırlamak için pratik bir numara istedi.
gnasher729
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.