Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Ordine dei byte - Wikipedia

Ordine dei byte

Da Wikipedia, l'enciclopedia libera.

Big-endian e little-endian sono due metodi differenti usati dai calcolatori per immagazzinare in memoria dati di dimensione superiore al byte (es. word, dword, qword).

La differenza tra i due sistemi è data dall'ordine con il quale i byte costituenti il dato da immagazzinare vengono memorizzati:

  • big-endian è la memorizzazione che inizia dal byte più significativo per finire col meno significativo; è utilizzata dai processori Motorola e nei protocolli usati in Internet
  • little-endian è la memorizzazione che inizia dal byte meno significativo per finire col più significativo; è utilizzata dai processori Intel
  • un ordine dei byte che non sia né crescente né decrescente viene alle volte definito middle-endian (ad esempio 3412 o 2143)

Da notare che questa differenziazione non riguarda né la posizione dei bit all'interno del byte (nel qual caso di parla di ordine dei bit) né le posizioni dei caratteri in una stringa. Ha invece importanza nelle stringhe con caratteri multi-byte come unicode e UTF.

Il big-endian, dato che è stato scelto come ordine standard in molti protocolli utilizzati in Internet, viene anche chiamato network byte order. Per contro viene chiamato host byte order l'ordine nativo dell'host in uso.

Indice

[modifica] Storia e motivazioni

La endianess (ordine dei byte) di un computer dipende essenzialmente dalla architettura hardware usata; Ad esempio, Intel e Digital usano il formato little endian mentre Motorola, IBM e Sun usano il formato big endian. Il formato dei dati contenuti nelle intestazioni dei protocolli di rete è anch'esso big endian; altri esempi di uso di questi due diversi formati sono quello del bus PCI, che è little endian, o quello del bus VME che è big endian.

[modifica] Etimologia

Big-endian e little-endian sono tratti dal nome dei due gruppi di persone incontrati dal personaggio fantastico Gulliver durante i suoi viaggi, in continuo litigio su quale lato fosse il migliore da rompere nelle uova.

[modifica] Uso dei formati di data

I termini vengono alle volte (ab)usati anche per indicare il formato di data:

  • gg/mm/aaaa: la data europea è little-endian
  • aaaa/mm/gg: la data big-endian è usata in Giappone e in ISO 8601
  • mm/gg/aaaa: la data usata in U.S.A. è middle-endian

[modifica] Esempi

Nel caso di una WORD, il numero esadecimale 0x0123 verrà immagazzinato rispettivamente:

      Little endian             Big endian
       +----+----+              +----+----+
       |0x23|0x01|              |0x01|0x23|
       +----+----+              +----+----+
 byte:    0    1                   0    1

Nel caso di una DWORD, il numero esadecimale 0x01234567 verrà immagazzinato rispettivamente:

           Little endian             Big endian              
       +----+----+----+----+    +----+----+----+----+
       |0x67|0x45|0x23|0x01|    |0x01|0x23|0x45|0x67|
       +----+----+----+----+    +----+----+----+----+
 byte:    0    1    2    3         0    1    2    3

(Negli esempi il valore in grassetto è il byte più significativo)

[modifica] Funzioni per la conversione

Le seguenti funzioni in linguaggio C possono essere usate per convertire una word o una dword da little a big endian e viceversa (la conversione è perfettamente simmetrica)

[modifica] Conversione di word

unsigned short int Endian_Word_Conversion(unsigned short int word) {
   return ((word>>8)&0x00FF) | ((word<<8)&0xFF00);
}

[modifica] Conversione di double word

unsigned long int Endian_DWord_Conversion(unsigned long int dword) {
   return ((dword>>24)&0x000000FF) | ((dword>>8)&0x0000FF00) | ((dword<<8)&0x00FF0000) | ((dword<<24)&0xFF000000);
}
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com