Per capire meglio il problema si consideri un intero a 32 bit scritto in una locazione di memoria posta ad un certo indirizzo. Come illustrato in fig. 14.7 i singoli bit possono essere disposti un memoria in due modi: a partire dal più significativo o a partire dal meno significativo. Così nel primo caso si troverà il byte che contiene i bit più significativi all'indirizzo menzionato e il byte con i bit meno significativi nell'indirizzo successivo; questo ordinamento è detto big endian, dato che si trova per prima la parte più grande. Il caso opposto, in cui si parte dal bit meno significativo è detto per lo stesso motivo little endian.
Si può allora verificare quale tipo di endianess usa il proprio computer con un programma elementare che si limita ad assegnare un valore ad una variabile per poi ristamparne il contenuto leggendolo un byte alla volta. Il codice di detto programma, endtest.c, è nei sorgenti allegati, allora se lo eseguiamo su un PC otterremo:
[piccardi@gont sources]$ ./endtest Using value ABCDEF01 val[0]= 1 val[1]=EF val[2]=CD val[3]=AB
piccardi@anarres:~/gapil/sources$ ./endtest Using value ABCDEF01 val[0]=AB val[1]=CD val[2]=EF val[3]= 1
La endianess di un computer dipende essenzialmente dalla architettura hardware usata; Intel e Digital usano il little endian, Motorola, IBM, Sun (sostanzialmente tutti gli altri) usano il 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.
Esistono poi anche dei processori che possono scegliere il tipo di formato all'avvio e alcuni che, come il PowerPC o l'Intel i860, possono pure passare da un tipo di ordinamento all'altro con una specifica istruzione. In ogni caso in Linux l'ordinamento è definito dall'architettura e dopo l'avvio del sistema resta sempre lo stesso, anche quando il processore permetterebbe di eseguire questi cambiamenti.
Per controllare quale tipo di ordinamento si ha sul proprio computer si è scritta una piccola funzione di controllo, il cui codice è riportato fig. 14.8, che restituisce un valore nullo (falso) se l'architettura è big endian ed uno non nullo (vero) se l'architettura è little endian.
Come si vede la funzione è molto semplice, e si limita, una volta assegnato (9) un valore di test pari a 0xABCD ad una variabile di tipo short (cioè a 16 bit), a ricostruirne una copia byte a byte. Per questo prima (10) si definisce il puntatore ptr per accedere al contenuto della prima variabile, ed infine calcola (11) il valore della seconda assumendo che il primo byte sia quello meno significativo (cioè, per quanto visto in fig. 14.7, che sia little endian). Infine la funzione restituisce (12) il valore del confonto delle due variabili.