Esiste qualche trucco pratico per ricordare la differenza tra big-endian e little-endian?

12

Non lavoro tutti i giorni con problemi big-endian e little-endian e quindi trovo molto difficile ricordare quale sia quello.

Recentemente ho ottenuto un'intervista chiedendo la differenza tra i due; dal momento che non ricordavo, ho deciso di "indovinare" (50% di possibilità, dopotutto) ma ho fallito.

Quindi, c'è qualche trucco pratico noto per ricordare qual è la differenza tra big endian e little endian?

    
posta Emiliano 04.04.2012 - 13:22
fonte

8 risposte

14

Ho sempre pensato che fosse definito nel modo sbagliato, e questo è anche il trucco per ricordarlo. Come madrelingua inglese non nativo, vedo "end" come l'opposto di "start" (anche se ovviamente "end" può significare una delle due estremità - la fine di inizio, o la fine di fine). Ad ogni modo, ricordo solo che "è definito nel modo sbagliato":)

  • Nel grande endian , il byte più significativo (il più grande) è start .
  • Nel piccolo endian , il byte meno significativo (il più piccolo) è in start .

Oppure, facendo riferimento a bit endianness :

  • 128 64 32 16 8 4 2 1 è big endian, perché finisce per poco.
  • 1 2 4 8 16 32 64 128 è little endian, perché finisce per il grande.

Anche se il solito uso della parola endianness si riferisce a come i byte sono ordinati all'interno di una parola, il suo significato generico si riferisce a l'ordinamento di sub-componenti individualmente indirizzabili all'interno della rappresentazione di un più grande elemento di dati ( come spiegato in Wikipedia ).

    
risposta data 04.04.2012 - 13:34
fonte
32

Il mio consiglio personale:

  • big endian = big-end prima! (il primo byte (indirizzo più basso) è l'MSB)
  • little endian = little-end prima! (il primo byte (indirizzo più basso) è il LSB)
risposta data 04.04.2012 - 14:27
fonte
6

Il modo migliore per ricordare questo è che i popoli civilizzati cercano varietà e quindi mangiano le uova in modo diverso da come ordinano i loro numeri. Mentre scriviamo cifre decimali iniziando dalle grandi cifre (big endian), mangiamo uova sode dalla piccola parte (little endian).

    
risposta data 28.08.2015 - 21:29
fonte
6

I numeri big-endian iniziano dalla "grande fine". I numeri little-endian iniziano dalla "piccola parte".

Entrambi sono un'allusione al problema di dove iniziare a mangiare il tuo uovo, come da Viaggi di Gulliver.

In questo caso, "end" non è l'opposto di start, significa solo estremi di una sequenza (corda | stringa | numero |), quindi non vengono chiamati "big finishian" o "little finishian" (che sarebbe sicuramente l'opposto di "start").

    
risposta data 29.08.2015 - 11:44
fonte
1

Non ho mai potuto ricordare quale sia "big-endian" e che sia "little-endian", ma conoscevo l'endianness dei processori PowerPC e Intel x86. La maggior parte delle lettere ha in comune con Intel, quindi Intel x86 è little-endian.

Ovviamente è utile solo se si conosce l'ordine dei byte di PPC e x86. D'altra parte, ora dovresti ricordare che Intel x86 = little-endian. E ricorda che x86 e ARM sono molto, molto compatibili anche con insiemi di istruzioni totalmente diversi.

    
risposta data 29.08.2015 - 17:36
fonte
1

Direi che è così: Big is beautiful!

Grande == bello == giusto.
L'endianess corretta è quella che puoi leggere in un dump esadecimale, che è quello che mette per primo il byte più significativo, come qualsiasi altro umano sano.

Piccolo == brutto == sbagliato.
Le esadecche prodotte da questo endianess sono così semplicemente sbagliate che scappi urlando "Cervelli!". Forse questa è una specie di abominio alieno, possiamo solo speculare all'origine di questa atrocità. Tuttavia, esiste e siamo bloccati con esso.

Peccato, non è sempre la migliore variante che rende la gara ...

    
risposta data 02.04.2016 - 00:22
fonte
1

Il modo più semplice per me da ricordare è cambiare la parola "endian" in "startian". I grandi numeri interi startian iniziano con la fine grande (ad esempio i byte più significativi vengono prima), e piccoli interi startian iniziano con la parte piccola (ad esempio, i byte meno significativi vengono prima).

    
risposta data 28.04.2016 - 03:17
fonte
-1

In big endian: (ordine crescente)

da basso a alto cioè.

0 | 1 | 2 | 3 ^ ^ Inizia fine

In little-Endian: (Ordine decrescente)

Da alto a basso

cioè.

3 | 2 | 1 | 0 ^ ^ Inizia fine

    
risposta data 02.04.2016 - 00:02
fonte

Leggi altre domande sui tag