Endianness

"Endian" et "endianness" (ou "ordre des octets") désigne la manière dont les ordinateurs organisent les octets pour constituer des nombres.

Chaque emplacement de stockage en mémoire dispose d'un index ou adresse. Un octet pouvant stocker une valeur de 8 bits (i.e. compris entre 0x00 et 0xff), il faut en réserver davantage pour enregistrer des nombres plus graends. L'ordre le plus utilisé pour composer des nombres sur plusieurs octets est de loin le little-endian qui est utilisé sur tous les processeurs Intel. Little-endian signifie que le stockage des octets se fait du moins important au plus important (où l'octet le moins important prend la première adresse ou la plus basse), ce qui est comparable à la façon habituelle en Europe d'écrire les dates (e.g., 31 décembre 2050).

Naturellement, big-endian est l'ordre opposé, similaire à une date au format ISO (2050-12-31). Big-endian est aussi souvent appelé "ordre d'octet du réseau" car les standards internet ont généralement besoin des données dans cet ordre, en commençant au niveau socket UNIX standard et en continuant avec les structures de données Web binaires standardisées. De plus, les anciens ordinateurs Mac utilisaient des microprocesseurs 680x0 ou PowerPC qui étaient big-endian.

Exemples avec le nombre 0x12345678 (i.e. 305 419 896 en décimal) :

  • little-endian :  0x78 0x56 0x34 0x12
  • big-endian : 0x12 0x34 0x56 0x78
  • mixed-endian (dans le passé et très rare) : 0x34 0x12 0x78 0x56

Détecter l'endianness de votre architecture

var littleEndian = (function() {
  var buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
  return new Int16Array(buffer)[0] === 256; // Int16Array utilise l'endianness de la plate-forme.
})();
console.log(littleEndian); // true ou false

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : xdelatour
 Dernière mise à jour par : xdelatour,