Big endian
Quand certains ordinateurs enregistrent un entier sur 32 bits en mémoire, par exemple 0xA0B70708 en notation hexadécimale, ils l'enregistrent dans des octets dans l'ordre qui suit : A0 B7 07 08, pour une structure de mémoire basée sur une unité atomique de 1 octet et un incrément d'adresse de 1 octet. Ainsi, l'octet de poids le plus fort (ici A0) est enregistré à l'adresse mémoire la plus petite, l'octet de poids inférieur (ici B7) est enregistré à l'adresse mémoire suivante et ainsi de suite.
Pour une structure de mémoire ou un protocole de communication basé sur une unité atomique de 2 octets, avec un incrément d'adresse de 1 octet, l'enregistrement dans des octets sera : A0B7 0708. L'unité atomique de poids le plus fort (ici A0B7) est enregistré à l'adresse mémoire la plus petite.
Les architectures qui respectent cette règle sont dites big-endian ou gros-boutistes ou mot de poids fort en tête, par exemple les processeurs Motorola 68000, les SPARC (Sun Microsystems) ou encore les System/370 (IBM).
Little endian
Les autres ordinateurs enregistrent 0xA0B70708 dans l'ordre suivant : 08 07 B7 A0 (pour une structure de mémoire basée sur une unité atomique de 1 octet et d'un incrément d'adresse de 1 octet), c'est-à-dire avec l'octet de poids le plus faible en premier. De telles architectures sont dites little-endian ou petit-boutistes ou mot de poids faible en tête. Par exemple, les processeurs x86, qui se trouvent dans les PC ont une architecture petit-boutiste.
Pour une structure de mémoire ou un protocole de communication basé sur une unité atomique de 2 octets, avec un incrément d'adresse de 1 octet, l'enregistrent dans des octets sera : 0708 A0B7. L'unité atomique de poids le plus faible (ici 0708) est enregistré à l'adresse mémoire la plus petite.
Bi-endian
Certaines architectures supportent les deux règles, par exemple les architectures PowerPC (IBM), ARM, DEC Alpha, MIPS, PA-RISC (HP) et IA-64 (Intel). On les appelle bytesexual(jargon), bi-endian ou, plus rarement, biboutistes. Le choix du mode peut se faire au niveau logiciel, au niveau matériel ou aux deux.
Middle-endian
Certaines autres rares architectures, appelées middle-endian, ont un ordonnancement plus complexe: les octets composant les unités atomiques subissent une opération de swap. Par exemple 0xA0B70708 est enregistré dans une mémoire, middle-endian dont les unités atomiques sont de 2 octets, avec un incrément d'adresse de 1 octet, dans l'ordre : 0807 B7A0 ou bien B7A0 0807.
| 0 | 1 | 2 | 3 | | |
| ... | 08 | 07 | B7 | A0 | ... | middle-endian, unité atomique 2-octets, incrément d'adresse 1-octet |
ou alternativement
| 0 | 1 | 2 | 3 | | |
| ... | B7 | A0 | 08 | 07 | ... | middle-endian, unité atomique 2-octets, incrément d'adresse 1-octet |
Il existe une ambiguïté dans la représentation de cette donnée. En effet l'information d'endianness sur la manière d'ordonner les unités atomiques existe toujours bel et bien. Au terme de middle-endian, on utilise donc plutôt les termes de big-endian ou little-endian associé à une caractéristique de byte-swap. L'exemple devient dès lors non ambigu :
1. dans une mémoire little-endian avec byte-swap, 2 octets d'unité atomique, 1-octet d'incrément d'adresse, 0xA0B70708 est représenté par 0807B7A0, 08 étant à l'adresse 0.
| 0 | 1 | 2 | 3 | | |
| ... | 08 | 07 | B7 | A0 | ... | little-endian, byte-swap, unité atomique 2 octets, incrément d'adresse 1 octet |
2. dans une mémoire big-endian avec byte-swap, 2 octets d'unité atomique, 1 octet d'incrément d'adresse, 0xA0B70708 est représenté par B7A00807, B7 étant à l'adresse 0.
| 0 | 1 | 2 | 3 | | |
| ... | B7 | A0 | 08 | 07 | ... | big-endian, byte-swap, unité atomique 2 octets, incrément d'adresse 1 octet |
Il est plus difficile de travailler avec de tels processeurs, les PDP-11 par exemple.
Ordre des bits
La numérotation des bits dans une architecture big-endian est ainsi : les bits sont numérotés de la gauche, donc le bit 0 a le poids le plus fort, et le bit 7 étant celui de poids le plus faible dans un octet. Cependant, si l'octet doit représenter une fraction binaire, alors la convention big-endian convient mieux.
Un moyen mnémotechnique pour ne pas confondre les deux notations consiste à remplacer « endian » par « head ». On a alors :
- « big head » pour les bits de poids « fort en tête »,
- « little head » pour les bits de poids « faible en tête ».