Boutisme

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 21 mars 2021 à 15:42 et modifiée en dernier par Fschwarzentruber (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Schéma récapitulatif des modes de représentation.

En informatique, le nombre entier est un type de données qui est généralement représenté sur plusieurs octets. Le boutisme (endianness en anglais) ou plus rarement endianisme désigne l'ordre dans lequel ces octets sont placés. Il existe deux conventions opposées : l'orientation gros-boutiste (ou gros-boutienne) qui démarre avec les octets de poids forts, et l'orientation inverse petit-boutiste (ou petit-boutienne).

L'expression est utilisée de manière plus générale pour désigner l'ordre des chiffres dans un système de numération positionnel (par exemple celui des bits).

Le choix du boutisme est typiquement fixé par l'architecture du processeur, ou par le format de données d'un fichier ou d'un protocole.

Étymologie

Gulliver and the Liliputans.

Gros-boutiste et petit-boutiste viennent des termes anglais big-endian et little-endian, popularisés dans le domaine informatique par Dany Cohen[1], en référence aux Voyages de Gulliver, conte satirique de Jonathan Swift. En 1721, Swift décrit comment de nombreux habitants de Lilliput refusent d'obéir à un décret obligeant à manger les œufs à la coque par le petit bout. La répression pousse les rebelles, dont la cause est appelée big-endian[2], à se réfugier dans l'empire rival de Blefuscu ce qui entretient une guerre longue et meurtrière entre les deux empires.

En 1980, Cohen publie « une tentative pour arrêter une guerre[1] », celle qui oppose les partisans big-endian et little-endian au sein du groupe qui travaille sur les protocoles réseau qui conduiront à Internet. Dans sa note technique, il indique qu'aucune argumentation logique ne peut montrer la supériorité d'une convention sur l'autre ; cependant, dans le domaine informatique, un choix doit être fait pour éviter le désordre.

En 1727, Pierre-François Guyot Desfontaines, traduit en français pour la première fois le roman de Swift[N 1]. Dans cette traduction, il utilise le terme gros-boutien, par exemple dans le chapitre 4[3]. L'Office québécois de la langue française préconise gros-boutiste et petit-boutiste, ce qui conduit au nom boutisme pour traduire endianness.

En informatique, il n'y a pas vraiment de préférence pour le suffixe -iste[réf. nécessaire][N 2]. Le suffixe -iste fait référence à un partisan d'une doctrine[réf. nécessaire], alors que -ien désigne plutôt un membre d'une communauté[réf. nécessaire] (à titre d'exemple, on dit linuxien et non linuxiste[réf. nécessaire]). En l'occurrence gros-boutiste semblerait plus approprié[non neutre].

Dans les ordinateurs

Gros-boutisme

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 fondé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.

0 1 2 3
... A0 B7 07 08 ...

Pour une structure de mémoire ou un protocole de communication fondé 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ée à l'adresse mémoire la plus petite.

0 1 2 3
... A0 B7 07 08 ...

Les architectures qui respectent cette règle sont dites gros-boutistes, big-endian ou « mot de poids fort en tête ». C'est le cas par exemple pour les processeurs Motorola 68000, les SPARC (Sun Microsystems) ou encore les System/370 (IBM).

De plus, tous les protocoles TCP/IP communiquent en gros-boutiste[4]. Il en va de même pour le protocole PCI Express.

Petit-boutisme

Les autres ordinateurs enregistrent 0xA0B70708 dans l'ordre suivant : 08 07 B7 A0 (pour une structure de mémoire fondé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 petit-boutistes, little-endian ou « mot de poids faible en tête ». Par exemple, les processeurs x86 ont une architecture petit-boutiste. Celle-ci, au prix d'une moindre lisibilité du code machine par le programmeur, simplifiait la circuiterie de décodage d'adresses courtes et longues en 1975[réf. souhaitée], quand un 8086 avait 29 000 transistors. Elle est d'influence pratiquement nulle en 2016, aussi bien en temps d'exécution (masqué) que d'encombrement (un Haswell typique comporte 1,4 milliard de transistors).

.footer { position: fixed; left: 0; bottom: 0; width: 100%; background-color: white; color: black; text-align: center; }
We need Your Support. Make a Donation now! or