Big endian vs Little endian

Big endian vs little endian, ovvero il problema della “endianness

 

I computer sono macchine (HW); ogni operazione che li riguarda deve essere realizzata secondo standard convenuti; solo così i circuiti possono essere costruiti e funzionare correttamente.

Il problema

Uno dei problemi che si è presentato agli inizi della tecnologia coi computer è stato quello dell’ordine dei byte, ovvero più specificamente:

  1. ordine di memorizzazione dei byte in memoria e/o
  2. ordine di emissione/ricezione dei byte/bit in linea

 

Partiamo con un esempio che spiega bene la questione: dovete memorizzare in RAM un numero intero a 16 bit, 0123h; esso è costituito da 2 byte: 01h e 23h; 01h è il byte più significativo (MSB) mentre 23h è quello meno significtivo (LSB). Come possono essere collocati in memoria questi byte? In due modi:

  • memorizzando prima (=alla locazione di memoria inferiore) il byte 01h e subito dopo il byte 23h. In questo modo quello che viene memorizzato prima è il byte più significativo. Questa modalità prende il nome di BIG ENDIAN

Oppure:

  • memorizzando prima (=alla locazione di memoria inferiore) il byte 23h e subito dopo il byte 01h. In questo modo quello che viene memorizzato prima è il byte meno significativo. Questa modalità prende il nome di LITTLE ENDIAN

I µP della Intel memorizzano i byte in modalità LITTLE ENDIAN.

 

La rilevanza della questione diventa notevole quando macchine con diverse convenzioni debbono comunicare, per esempio via Internet, e trasmettere una all'altra dei numeri.

 

Facciamo ora un esempio con le trasmissioni di bit. Lo standard RS-232C riguarda la trasmissione seriale a corta distanza di byte; come tutte le trasmissioni seriali, spedisce in linea un bit alla volta. Prendiamo il caso di dover trasmettere il byte 01000001. La modalità forse più naturale per trasmetterlo è quella di inviare in linea 0, poi 1, poi 0 .. 0 .. 0 .. 1 .. 0 .. 0, cominciando quindi prima col bit più significativo; questa sarebbe una modalità BIG ENDIAN.Lo standard RS-232C prevede invece la modalità LITTLE ENDIAN, quindi l’ordine di uscita dei bit dalla porta seriale sarà: 0 → 0 → 1 → 0 → 0 → 0 → 0 → 1

 

Esistono anche possibilità miste. Per esempio l’interfaccia Ethernet manda in linea i byte in BIG ENDIAN, ma i bit in LITTLE ENDIAN. Se si deve trasmettere la sequenza di 3 byte: 01-23-56h, che in termini di bit corrisponde a 0000 0001 0010  0011 0101 0110, in linea si troverà questa sequenza:

1000 0000 1100 0100 0110 1010

Last modified: Thursday, 9 January 2020, 4:42 PM