« Boutisme » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Zwobot (discuter | contributions)
m robot Ajoute: es
Ureir (discuter | contributions)
m →‎Étymologie : Mise à jour du lien vers le texte original
 
(256 versions intermédiaires par plus de 100 utilisateurs sont masquées)
Ligne 1 : Ligne 1 :
[[Fichier:Endianessmap_fr.svg|thumb|Schéma récapitulatif des modes de représentation.]]
[[de:Byte-Reihenfolge]] [[en:Endianness]] [[es:Endianness]] [[it:Endianess]] [[ja:エンディアン]] [[pl:Kolejność bajtów]]
En [[informatique]], le [[Entier (informatique)|nombre entier]] est un [[Type (informatique)|type de données]] qui est généralement représenté sur plusieurs [[octet]]s. 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 [[Chiffre|chiffres]] dans un [[système de numération]] [[Notation positionnelle|positionnel]] (par exemple celui des [[Bit|bits]]).
[[Catégorie:Informatique]]


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.
En [[informatique]], quand un [[entier relatif|entier]] ou toute autre donnée est représenté sur plusieurs [[octet]]s, il y a plusieurs manières d’ordonner ces octets en mémoire ou dans une communication ; cet ordre est déterminé par des conventions arbitraires.


== Étymologie ==
Il en est de même dans l’écriture des langages humains : certains s’écrivent de gauche à droite, alors que d’autres s’écrivent de droite à gauche (sans parler de ceux qui s’écrivent à la verticale). Cette convention en informatique est appelée '''''endianness''''' et a deux alternatives majeures nommées '''''big-endian''''' et '''''little-endian''''', qui sont parfois traduites en '''gros-boutiste''' et '''petit-boutiste'''. On entend parler aussi de '''''byte order''''', d’'''ordre des octets''' ou de '''''byte sex'''''. Il faut noter que cela ne concerne pas les séquences d’octets simples comme les [[chaînes de caractères]] codées en [[ASCII]], et autres codes de même genre où un octet correspond à un caractère. Les chaînes de caractères [[Unicode]], codées en [[UTF-16]] ou [[UTF-32]], quant à elles, sont concernées parce que, dans ce cas, c’est un ensemble de 2 ou 4 octets qui représente un caractère.
[[Fichier:Gulliver and the Liliputans, trade card for J. & P. Coats spool cotton, late 19th c.jpg|gauche|vignette|''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<ref name="HOLY">Danny Cohen: ''[http://www.ietf.org/rfc/ien/ien137.txt On Holy Wars and a Plea for Peace.]'' [[Internet Engineering Task Force|IETF]], avril 1980.</ref>, en référence aux ''[[Les Voyages de Gulliver|Voyages de Gulliver]]'', conte satirique de [[Jonathan Swift]]. En 1721, Swift décrit comment de nombreux habitants de [[Lilliput (île)|Lilliput]] refusent d'obéir à un décret obligeant à manger les [[œuf à la coque|œufs à la coque]] par le petit bout. La répression pousse les rebelles, dont la cause est appelée ''big-endian''<ref>[https://en.wikisource.org/wiki/The_Works_of_the_Rev._Jonathan_Swift/Volume_6/A_Voyage_to_Lilliput/Chapter_4 texte original] sur wikisource.</ref>, à 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<ref name="HOLY"/> », celle qui oppose les partisans ''big-endian'' et ''little-endian'' au sein du groupe qui travaille sur les [[protocole réseau|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.
== Dans les [[ordinateur]]s ==
Quand certains ordinateurs enregistrent un entier sur 32 [[bit]]s en mémoire, par exemple 0xA0B70708 en [[hexadécimal|notation hexadécimale]], ils l’enregistrent dans des octets dans l’ordre qui suit : A0 B7 07 08. 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.


En 1727, [[Pierre-François Guyot Desfontaines]], traduit en français pour la première fois le roman de Swift<ref group="N">[http://fr.wikisource.org/wiki/Les_Voyages_de_Gulliver_:_Voyage_%C3%A0_Lilliput ''Le voyage de Gulliver à Lilliput''] traduit sur Wikisource.</ref>. Dans cette traduction, il utilise le terme ''gros-boutien'', par exemple dans le chapitre 4<ref>{{Chapitre|prénom1=Jonathan|nom1=Swift|titre chapitre=CHAPITRE IV. |titre=Les Voyages de Gulliver : Voyage à Lilliput|éditeur=Hiard|date=1832|lire en ligne=https://fr.wikisource.org/wiki/Les_Voyages_de_Gulliver/Voyage_%C3%A0_Lilliput/IV|consulté le=2021-03-21|passage=51–60}}.</ref>. L'[[Office québécois de la langue française]] préconise ''gros-boutiste''<ref>{{Lien web |titre=mode gros-boutiste |url=http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=8383280 |site=gdt.oqlf.gouv.qc.ca |consulté le=2021-03-21}}.</ref> et ''petit-boutiste''<ref>{{Lien web |titre=mode petit-boutiste |url=http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=8383281 |site=gdt.oqlf.gouv.qc.ca |consulté le=2021-03-21}}.</ref>, ce qui conduit au nom ''boutisme'' pour traduire ''endianness''{{Référence nécessaire|date=21 mars 2021}}.
Les architectures qui respectent cette règle sont dites '''''big-endian''''' ou '''gros-boutistes''', par exemple les processeurs [[Motorola 68000]], les [[SPARC]] ([[Sun Microsystems]]) ou encore les [[System/370]] ([[International Business Machines Corporation|IBM]]).


En informatique, {{refnec|il n'y a pas vraiment de préférence pour le suffixe ''-iste''}}<ref group=N> Le débat n’est pas encore tranché, la guerre entre les boutistes et les boutiens, sur les forums et listes de discussions Internet, n’étant pas moins féroce qu’à [[Lilliput]], et les partisans de chaque camp prenant référence de chaque côté à une traduction française publiée ou une autre des mêmes ''[[Les Voyages de Gulliver|Voyages de Gulliver]]'' !</ref>. {{refnec|Le suffixe ''-iste'' fait référence à un partisan d'une doctrine}}, {{refnec|alors que ''-ien'' désigne plutôt un membre d'une communauté}} ({{refnec|à titre d'exemple, on dit ''linuxien'' et non ''linuxiste''}}). {{non-neutre|En l'occurrence gros-boutiste semblerait plus approprié}}.
Les autres ordinateurs enregistrent 0xA0B70708 dans l’ordre suivant : 08 07 B7 A0, c’est-à-dire avec l’octet de poids le plus faible en premier. De telles architectures sont dites '''''little-endian''''' ou '''petit-boutistes'''. Par exemple, les processeurs [[x86]], qui se trouvent dans les [[Compatible PC|PC]] ont une architecture petit-boutiste.


== Dans les ordinateurs ==
Certaines architectures supportent les deux règles, par exemple les architectures [[PowerPC]] ([[International Business Machines Corporation|IBM]]), [[processeur ARM|ARM]], [[DEC Alpha]], [[MIPS]], [[PA-RISC]] ([[Hewlett-Packard|HP]]) et [[IA-64]] ([[Intel Corporation|Intel]]). On les appelle '''''bytesexual''''', '''''bi-endian''''' ou, plus rarement, '''biboutistes'''. Le choix du mode peut se faire au niveau logiciel, au niveau matériel ou aux deux.
=== Gros-boutisme ===
Quand certains [[ordinateur]]s enregistrent un entier sur 32 [[bit]]s en mémoire, par exemple <code>0xA0B70708</code> en [[Hexadécimal|notation hexadécimale]], ils l'enregistrent dans des octets dans l'ordre qui suit : <code>A0 B7 07 08</code>, 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 <code>A0</code>) est enregistré à l'adresse mémoire la plus petite, l'octet de poids inférieur (ici <code>B7</code>) est enregistré à l'adresse mémoire suivante et ainsi de suite.


{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
Certaines autres architectures, appelées '''''middle-endian''''', ont un ordonnancement plus complexe, par exemple 0xA0B70708 est enregistré ainsi : 07 08 A0 B7. Il est plus difficile de travailler avec des tels processeurs, les [[PDP]] par exemple.
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|}


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 <code>A0B7 0708</code>. L'unité atomique de poids le plus fort (ici <code>A0B7</code>) est enregistrée à l'adresse mémoire la plus petite.
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.
Il semble plus intuitif de numéroter les bits à la manière ''little-endian'' si un octet doit représenter un
entier, car dans ce cas, le numéro du bit correspond à l’exposant. Cependant, si l’octet doit représenter une
fraction binaire, alors, la convention ''big-endian'' convient mieux.


{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
Un moyen mnémotechnique pour ne pas se mélanger les idées, il suffit de remplacer « endian » par « head ».
|-
Ce qui nous donne :
|style="padding: 0em 1em;"|
"big head" pour les bits de poids « fort en tête »
|style="padding: 0em 1em;"| <code>0</code>
"small head" pour les bits de poids « faible en tête »
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|}

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 [[Architecture SPARC|SPARC]] ([[Sun Microsystems]]) ou encore les [[IBM 360 et 370|System/370]] ([[International Business Machines Corporation|IBM]]).

De plus, tous les protocoles [[TCP/IP]] communiquent en gros-boutiste<ref>{{Ouvrage|langue=en|prénom1=Michael|nom1=Barr|prénom2=Anthony|nom2=Massa|titre=Programming Embedded Systems|sous-titre=With C and GNU Development Tools|éditeur=O'Reilly Media, Inc.|année=2006|isbn=|lire en ligne=https://books.google.fr/books?id=NzqbAgAAQBAJ&pg=PA100&dq=%22the+TCP%2FIP+suite+are+defined+as+big-+endian%22}}.</ref>. Il en va de même pour le protocole [[PCI Express]].

=== Petit-boutisme ===
Les autres ordinateurs enregistrent <code>0xA0B70708</code> dans l'ordre suivant : <code>08 07 B7 A0</code> (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érence souhaitée}}, quand un 8086 avait {{Unité|29000}} transistors. Elle est d'influence pratiquement nulle en 2016, aussi bien en temps d'exécution (masqué) que d'encombrement (un [[Haswell (microarchitecture)|Haswell]] typique comporte 1,4 ''milliard'' de transistors).

{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|}

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 <code>0708 A0B7</code>. L'unité atomique de poids le plus faible (ici <code>0708</code>) est enregistré à l'adresse mémoire la plus petite.

{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|}

=== Bi-boutisme ===
Certaines architectures supportent les deux règles, par exemple les architectures [[PowerPC]] ([[International Business Machines Corporation|IBM]]), [[processeur ARM|ARM]], [[DEC Alpha]], [[Architecture MIPS|MIPS]], [[PA-RISC]] ([[Hewlett-Packard|HP]]) et [[IA-64]] ([[Intel Corporation|Intel]]). On les appelle ''bytesexual'' (jargon), ''bi-endian'' ou bi-boutistes. Le choix du mode peut se faire au niveau logiciel, au niveau matériel ou aux deux.

=== Mi-boutisme ===
Certaines autres rares architectures, appelées mi-boutistes<ref>{{Lien web|langue=|titre=Debian -- Lexique|url=https://www.debian.org/international/french/lexique|site=debian.org|périodique=|date=|consulté le=22 avril 2019}}.</ref> ou ''middle-endian'', ont un ordonnancement plus complexe : les octets composant les unités atomiques subissent une opération d'inversion. Par exemple <code>0xA0B70708</code> est enregistré dans une mémoire mi-boutiste dont les unités atomiques sont de 2 octets, avec un incrément d'adresse de 1 octet, dans l'ordre : <code>0807 B7A0</code> ou bien <code>B7A0 0807</code>.

{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="padding: 0em 1em;"| mi-boutiste, unité atomique 2 octets, incrément d'adresse 1 octet
|}

ou alternativement

{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="padding: 0em 1em;"| mi-boutiste, 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 de boutisme sur la manière d'ordonner les unités atomiques existe toujours bel et bien. On utilise donc les termes de gros-boutiste ou petit-boutiste associés à une caractéristique de ''byte-swap'', plutôt que celui de mi-boutiste. L'exemple devient dès lors non ambigu :

1. Dans une mémoire petit-boutiste avec ''byte-swap'', 2 octets d'unité atomique, 1 octet d'incrément d'adresse, <code>0xA0B70708</code> est représenté par <code>0807 B7A0</code>, <code>08</code> étant à l'adresse <code>0</code>.
{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
| style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;" | <code>B7</code>
| style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;" | <code>A0</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="padding: 0em 1em;"| petit-boutiste, ''byte-swap'', unité atomique 2 octets, incrément d'adresse 1 octet
|}

2. Dans une mémoire gros-boutiste avec ''byte-swap'', 2 octets d'unité atomique, 1 octet d'incrément d'adresse, <code>0xA0B70708</code> est représenté par <code>B7A0 0807</code>, <code>B7</code> étant à l'adresse <code>0</code>.
{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"| <code>0</code>
|style="padding: 0em 1em;"| <code>1</code>
|style="padding: 0em 1em;"| <code>2</code>
|style="padding: 0em 1em;"| <code>3</code>
|style="padding: 0em 1em;"|
|style="padding: 0em 1em;"|
|-
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>B7</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>A0</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>08</code>
|style="border: 1px solid #000000; border-left: 1px solid #ffffff; padding: 0em 1em;"| <code>07</code>
|style="border: 1px solid #000000; border-right: 1px solid #ffffff; padding: 0em 1em;"| <code>...</code>
|style="padding: 0em 1em;"| gros-boutiste, ''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 ===
Dans une architecture gros-boutiste, les bits sont conventionnellement numérotés de la gauche vers la droite. Ainsi le bit de poids le plus fort est le bit 0, et le bit de poids le plus faible est le 7 dans un octet. Dans une architecture petit-boutiste, c'est le contraire sur la [[numérotation des bits]] avec le bit de poids le plus fort (à gauche) qui est le bit 7 alors que le bit de poids le plus faible (à droite) est le bit 0 dans un octet.

Si l'octet doit représenter un nombre entier, alors la convention gros-boutiste peut porter à confusion car le poids du bit ''n'' est alors 2<sup>7-''n''</sup> (au lieu de 2<sup>''n''</sup> avec la convention petit-boutiste). En revanche, elle convient mieux pour représenter une fraction binaire, le poids du bit ''n'' étant alors 2<sup>-''n''</sup> (contre 2<sup>''n''-7</sup> pour petit-boutiste).

Un moyen [[mnémotechnique]] pour ne pas confondre les deux notations consiste à remplacer « boutiste » par « tête ». On a alors :
* « gros-tête » pour les bits de poids « fort en tête » ;
* « petit-tête » pour les bits de poids « faible en tête ».

== Dans les systèmes d'exploitation (par architectures) ==
Sur architecture petit-boutiste :
* [[DragonFly BSD]] sur x86, et x86-64
* [[ESX]] sur x86, x86-64
* [[FreeBSD]] sur x86, x86-64, MIPS, ARM et Itanium
* [[iOS (Apple)|iOS]] sur ARM
* [[Noyau Linux|Linux]] sur x86, x86-64, MIPS'''EL''', Alpha, Itanium, S+core, MN103, CRIS, Blackfin, Microblaze'''EL''', ARM, M32R'''EL''', TILE, SH, Xtensa'''EL''' et UniCore32
* [[Mac OS X]] sur x86, x86-64
* [[NetBSD]] sur x86, x86-64, Itanium, etc.
* [[OpenBSD]] sur x86, x86-64, Alpha, [[VAX]], [[Loongson]] (MIPS'''EL''')
* [[OpenVMS]] sur VAX, Alpha et Itanium
* [[Solaris (système d'exploitation)|Solaris]] sur x86, x86-64, PowerPC
* [[Tru64 UNIX]] sur Alpha
* [[Windows]] sur x86, x86-64, [[Itanium]], [[DEC_Alpha|Alpha]], [[PowerPC|IBM PowerPC]] ([[Windows NT 3.51|NT-3.51]] et [[Windows NT 4.0|4.0]] seulement) et [[MIPS]].

Sur architecture gros-boutiste :
* [[AIX]] sur POWER
* [[AmigaOS]] sur PowerPC et 680x0
* [[FreeBSD]] sur MIPS, ARM, PowerPC et SPARC
* [[HP-UX]] sur Itanium et PA-RISC
* [[IRIX]] sur MIPS
* [[Noyau Linux|Linux]] sur MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, z/Architecture, H8, FR-V, AVR32, Microblaze, ARM'''EB''', M32R, SH'''EB''', Xtensa et ubicom32.
* [[Mac OS Classic]] sur PowerPC et 680x0
* [[Mac OS X]] sur PowerPC
* [[MorphOS]] sur PowerPC
* [[MVS]] and [[DOS/VSE]] sur ESA/390, and [[z/VSE]] et [[z/OS]] on z/Architecture
* [[NetBSD]] sur PowerPC, SPARC, etc.
* [[OpenBSD]] sur PowerPC, SPARC, PA-RISC, SGI (MIPS'''EB'''), Motorola 68k et 88k, Landisk (SuperH-4)
* [[Solaris (système d'exploitation)|Solaris]] sur SPARC


== Dans les communications ==
== Dans les communications ==
On appelle cela le problème NUXI, en effet si on veut envoyer la chaîne « UNIX » en regroupant deux octets par
On appelle cela le problème NUXI, en effet si on veut envoyer la chaîne « UNIX » en regroupant deux octets par
mot entier de 16 bits sur une machine de convention différente, alors on obtient NUXI. Ce problème a été
mot entier de 16 bits sur une machine de convention différente, alors on obtient NUXI. Ce problème a été
découvert en voulant porter une des premières versions d’[[Unix]] d’un [[PDP-11]] ''little-endian'' sur une architecture [[IBM]] ''big-endian''.
découvert en voulant porter une des premières versions d'[[Unix]] d'un [[PDP-11]] ''mi-boutiste'' sur une architecture [[International Business Machines Corporation|IBM]] gros-boutiste.


Le protocole IP définit un standard, le '''''network byte order''''' (soit ordre des octets du réseau). Dans ce protocole, les informations binaires sont en général codées en paquets, et envoyées sur le réseau, l’octet de poids le plus fort en premier, c’est-à-dire selon le mode ''big-endian'' – et cela quelque soit l'''endianness'' naturel du processeur hôte.
Le protocole IP définit un standard, le '''''network byte order''''' (soit ordre des octets du réseau). Dans ce protocole, les informations binaires sont en général codées en paquets, et envoyées sur le réseau, l'octet de poids le plus fort en premier, c'est-à-dire selon le mode gros-boutiste et cela quel que soit le boutisme naturel du processeur hôte.


Les périphériques doivent aussi respecter une convention afin d’assurer la cohérence du système. Tout cela
Les périphériques doivent aussi respecter une convention afin d'assurer la cohérence du système. Tout cela est fixé par le protocole de la [[couche de liaison]] du [[modèle OSI]].

est fixé par le [[modèle OSI]].
== Différences pratiques ==
Bien que la différence entre les modes gros-boutiste et petit-boutiste semble aujourd'hui minime et se limite à un problème de convention, on peut signaler des avantages liés à chacun :

Le mode petit-boutiste présentait des avantages lorsque les processeurs utilisaient des tailles de [[Registre (informatique)|registre]] variables, c’est-à-dire 8, 16 ou 32 bits. À partir d'une [[adresse mémoire]] donnée, on pouvait lire le même nombre en lisant 8, 16 ou 32 bits.

Par exemple, le nombre 33 (0x21 en [[hexadécimal]]) s'écrit ''2100 0000'' en petit-boutiste sur 32 bits et ''2100'' en petit-boutiste sur 16 bits, ce qui se lit toujours ''21'' quel que soit le nombre d'octets lus. Cela est faux en gros-boutiste car la première adresse change suivant le nombre d'octets à lire.

Pour sa part, le mode gros-boutiste offrait un meilleur confort de lecture pour les êtres humains (de langue européenne) lorsque ceux-ci devaient lire des nombres représentés sur plusieurs octets à l'intérieur de [[Core dump|dumps mémoire]], puisque cette convention d'écriture correspond à celle utilisée pour écrire les nombres dans les langues européennes (de la gauche vers la droite, on écrit les chiffres de poids décroissant).

Par exemple, le nombre {{formatnum:87653}} (0x15665 en [[hexadécimal]]) s'écrit ''0001&nbsp;5665'' en gros-boutiste sur 32 bits, ce qui correspond à l'écriture usuelle dans les langues indo-européennes. Ce n'est pas le cas avec le mode petit-boutiste, dans lequel le même nombre s'écrit ''6556&nbsp;0100'' sur 32 bits : avant de pouvoir le lire, il faut alors mentalement inverser les octets un par un, ce qui n'est pas usuel (pour les êtres humains de langue européenne) et exige un effort cérébral important.


== Logiciels et portabilité ==
== Logiciels et portabilité ==
On a bien compris que ces conventions posent des problèmes dans le portage des logiciels. Par exemple, en lisant des données binaires, selon l’architecture, on ne va pas obtenir la même donnée après lecture si on ne soucie pas de la convention.
On a bien compris que ces conventions posent des problèmes dans le portage des logiciels. Par exemple, en lisant des données binaires, selon l'architecture, on ne va pas obtenir la même donnée après lecture si on ne se soucie pas de la convention.


Bien sûr le choix de gros-boutiste ou petit-boutiste est toujours arbitraire, ce qui soulève des débats intensifs, car il y a {{lesquels|nombre d'arguments}} en faveur de l'un et de l'autre. Ainsi, une rupture de communication en cours de transmission favorise le grosboutisme, car on a transmis une valeur approximative (arrondie) de ce qu'on veut transmettre. Les langues par exemple, selon le groupe linguistique germanique, anglais ou autre, n'ont pas la même perception.
Bien sur le choix de ''big-endian'' ou ''little-endian'' est toujours arbitraire, ce qui soulève des débats
intensifs, car il y a nombre d’arguments en faveur de l’un et de l’autre. Les langues par exemple, selon la
linguistique germanique, anglaise, ou autre, on n’a pas la même perception.


== Écriture des nombres dans les langues humaines ==
== Écriture des nombres dans les langues humaines ==
Les langues humaines n'ont pas toutes la même convention pour la transcription des nombres.
Le problème du choix du sens d’écriture se pose aussi pour l’écriture des nombres en notation positionnelle dans les langues humaines.


Le produit de trois par sept a la même valeur en France et en Allemagne. Ce nombre se prononce « vingt-et-un » en français (ce qui correspond à une convention gros-boutiste) ; en allemand, il se dit « einundzwanzig », c'est-à-dire « un et vingt ». Dans chacune de ces langues, la convention d'écriture en toutes lettres reflète la prononciation orale.
Dans les langues utilisant l’alphabet latin, qui se lisent de gauche à droite, les nombres s’écrivent en commençant par les chiffres de poids le plus forts. C’est donc une convention ''big-endian''. En [[arabe]], c’est l’inverse: on écrit — cette fois de droite à gauche — d’abord les unités, puis les dizaines, etc. C’est une convention ''little-endian''... relativement au sens d’écriture ordinaire de cette langue. (Il est amusant de constater que ces deux conventions opposées donnent le même résultat, du point de vue gauche-droite : les unités à droite...)


En arabe, quand on écrit un nombre en chiffres en suivant le sens habituel d'écriture de l'arabe, on commence par écrire le chiffre des unités, puis celui des dizaines, pour finir avec le chiffre de poids le plus fort : ce qui est analogue à une convention petit-boutiste. Comme l'arabe s'écrit de droite à gauche, le chiffre des unités est à droite de la page.
== Étymologie ==
À l'opposé, pour écrire un nombre en chiffres dans un texte en français, on commence par le chiffre de poids le plus fort, pour terminer par le chiffre des unités : c'est donc une convention gros-boutiste, par rapport au sens d'écriture usuel du français.
Les termes ''big-endian'' et ''little-endian'' ont été empruntés aux [[Les Voyages de Gulliver|Voyages de Gulliver]] de [[Jonathan Swift]], dans lequel ces deux clans de Lilliputiens se font la guerre à cause de la manière différente qu'ils ont de casser les œufs à la coque : par le gros ou le petit bout.
Néanmoins, comme le français et l'arabe s'opposent à la fois sur le boutisme et sur leur sens d'écriture usuel, dans les deux cas, le chiffre des unités est à droite de la page, et le chiffre de poids le plus fort se trouve à gauche.

== Écriture des dates ==
Certains pays ont des standards concernant l'écriture des dates. La notion de boutisme y est présente comme le montrent les exemples suivants :
* [[Europe]] : JJ/MM/AAAA (petit-boutiste)
* [[Japon]] ou [[Chine]] : AAAA/MM/JJ (gros-boutiste)
* [[États-Unis]] : MM/JJ/AAAA (mi-boutiste)
* Standard [[ISO 8601]] : [[AAAA-MM-JJ]] (gros-boutiste)

== Notes et références ==
=== Notes ===
{{Références|groupe=N}}

=== Références ===
{{Références}}

== Voir aussi ==
=== Article connexe ===
* [[Alignement en mémoire]]

=== Lien externe ===
* {{en}} {{pdf}} [http://3bc.bertrand-blanc.com/endianness05.pdf White Paper: Endianness or Where is Byte 0?]

{{Portail|informatique}}

[[Catégorie:Architecture informatique]]

Dernière version du 4 mai 2024 à 20:08

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[modifier | modifier le code]

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[4] et petit-boutiste[5], ce qui conduit au nom boutisme pour traduire endianness[réf. nécessaire].

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[modifier | modifier le code]

Gros-boutisme[modifier | modifier le code]

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[6]. Il en va de même pour le protocole PCI Express.

Petit-boutisme[modifier | modifier le code]

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).

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

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 0708 A0B7. L'unité atomique de poids le plus faible (ici 0708) est enregistré à l'adresse mémoire la plus petite.

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

Bi-boutisme[modifier | modifier le code]

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 bi-boutistes. Le choix du mode peut se faire au niveau logiciel, au niveau matériel ou aux deux.

Mi-boutisme[modifier | modifier le code]

Certaines autres rares architectures, appelées mi-boutistes[7] ou middle-endian, ont un ordonnancement plus complexe : les octets composant les unités atomiques subissent une opération d'inversion. Par exemple 0xA0B70708 est enregistré dans une mémoire mi-boutiste 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 ... mi-boutiste, unité atomique 2 octets, incrément d'adresse 1 octet

ou alternativement

0 1 2 3
... B7 A0 08 07 ... mi-boutiste, 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 de boutisme sur la manière d'ordonner les unités atomiques existe toujours bel et bien. On utilise donc les termes de gros-boutiste ou petit-boutiste associés à une caractéristique de byte-swap, plutôt que celui de mi-boutiste. L'exemple devient dès lors non ambigu :

1. Dans une mémoire petit-boutiste avec byte-swap, 2 octets d'unité atomique, 1 octet d'incrément d'adresse, 0xA0B70708 est représenté par 0807 B7A0, 08 étant à l'adresse 0.

0 1 2 3
... 08 07 B7 A0 ... petit-boutiste, byte-swap, unité atomique 2 octets, incrément d'adresse 1 octet

2. Dans une mémoire gros-boutiste avec byte-swap, 2 octets d'unité atomique, 1 octet d'incrément d'adresse, 0xA0B70708 est représenté par B7A0 0807, B7 étant à l'adresse 0.

0 1 2 3
... B7 A0 08 07 ... gros-boutiste, 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[modifier | modifier le code]

Dans une architecture gros-boutiste, les bits sont conventionnellement numérotés de la gauche vers la droite. Ainsi le bit de poids le plus fort est le bit 0, et le bit de poids le plus faible est le 7 dans un octet. Dans une architecture petit-boutiste, c'est le contraire sur la numérotation des bits avec le bit de poids le plus fort (à gauche) qui est le bit 7 alors que le bit de poids le plus faible (à droite) est le bit 0 dans un octet.

Si l'octet doit représenter un nombre entier, alors la convention gros-boutiste peut porter à confusion car le poids du bit n est alors 27-n (au lieu de 2n avec la convention petit-boutiste). En revanche, elle convient mieux pour représenter une fraction binaire, le poids du bit n étant alors 2-n (contre 2n-7 pour petit-boutiste).

Un moyen mnémotechnique pour ne pas confondre les deux notations consiste à remplacer « boutiste » par « tête ». On a alors :

  • « gros-tête » pour les bits de poids « fort en tête » ;
  • « petit-tête » pour les bits de poids « faible en tête ».

Dans les systèmes d'exploitation (par architectures)[modifier | modifier le code]

Sur architecture petit-boutiste :

Sur architecture gros-boutiste :

  • AIX sur POWER
  • AmigaOS sur PowerPC et 680x0
  • FreeBSD sur MIPS, ARM, PowerPC et SPARC
  • HP-UX sur Itanium et PA-RISC
  • IRIX sur MIPS
  • Linux sur MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, z/Architecture, H8, FR-V, AVR32, Microblaze, ARMEB, M32R, SHEB, Xtensa et ubicom32.
  • Mac OS Classic sur PowerPC et 680x0
  • Mac OS X sur PowerPC
  • MorphOS sur PowerPC
  • MVS and DOS/VSE sur ESA/390, and z/VSE et z/OS on z/Architecture
  • NetBSD sur PowerPC, SPARC, etc.
  • OpenBSD sur PowerPC, SPARC, PA-RISC, SGI (MIPSEB), Motorola 68k et 88k, Landisk (SuperH-4)
  • Solaris sur SPARC

Dans les communications[modifier | modifier le code]

On appelle cela le problème NUXI, en effet si on veut envoyer la chaîne « UNIX » en regroupant deux octets par mot entier de 16 bits sur une machine de convention différente, alors on obtient NUXI. Ce problème a été découvert en voulant porter une des premières versions d'Unix d'un PDP-11 mi-boutiste sur une architecture IBM gros-boutiste.

Le protocole IP définit un standard, le network byte order (soit ordre des octets du réseau). Dans ce protocole, les informations binaires sont en général codées en paquets, et envoyées sur le réseau, l'octet de poids le plus fort en premier, c'est-à-dire selon le mode gros-boutiste et cela quel que soit le boutisme naturel du processeur hôte.

Les périphériques doivent aussi respecter une convention afin d'assurer la cohérence du système. Tout cela est fixé par le protocole de la couche de liaison du modèle OSI.

Différences pratiques[modifier | modifier le code]

Bien que la différence entre les modes gros-boutiste et petit-boutiste semble aujourd'hui minime et se limite à un problème de convention, on peut signaler des avantages liés à chacun :

Le mode petit-boutiste présentait des avantages lorsque les processeurs utilisaient des tailles de registre variables, c’est-à-dire 8, 16 ou 32 bits. À partir d'une adresse mémoire donnée, on pouvait lire le même nombre en lisant 8, 16 ou 32 bits.

Par exemple, le nombre 33 (0x21 en hexadécimal) s'écrit 2100 0000 en petit-boutiste sur 32 bits et 2100 en petit-boutiste sur 16 bits, ce qui se lit toujours 21 quel que soit le nombre d'octets lus. Cela est faux en gros-boutiste car la première adresse change suivant le nombre d'octets à lire.

Pour sa part, le mode gros-boutiste offrait un meilleur confort de lecture pour les êtres humains (de langue européenne) lorsque ceux-ci devaient lire des nombres représentés sur plusieurs octets à l'intérieur de dumps mémoire, puisque cette convention d'écriture correspond à celle utilisée pour écrire les nombres dans les langues européennes (de la gauche vers la droite, on écrit les chiffres de poids décroissant).

Par exemple, le nombre 87 653 (0x15665 en hexadécimal) s'écrit 0001 5665 en gros-boutiste sur 32 bits, ce qui correspond à l'écriture usuelle dans les langues indo-européennes. Ce n'est pas le cas avec le mode petit-boutiste, dans lequel le même nombre s'écrit 6556 0100 sur 32 bits : avant de pouvoir le lire, il faut alors mentalement inverser les octets un par un, ce qui n'est pas usuel (pour les êtres humains de langue européenne) et exige un effort cérébral important.

Logiciels et portabilité[modifier | modifier le code]

On a bien compris que ces conventions posent des problèmes dans le portage des logiciels. Par exemple, en lisant des données binaires, selon l'architecture, on ne va pas obtenir la même donnée après lecture si on ne se soucie pas de la convention.

Bien sûr le choix de gros-boutiste ou petit-boutiste est toujours arbitraire, ce qui soulève des débats intensifs, car il y a nombre d'arguments[Lesquels ?] en faveur de l'un et de l'autre. Ainsi, une rupture de communication en cours de transmission favorise le grosboutisme, car on a transmis une valeur approximative (arrondie) de ce qu'on veut transmettre. Les langues par exemple, selon le groupe linguistique germanique, anglais ou autre, n'ont pas la même perception.

Écriture des nombres dans les langues humaines[modifier | modifier le code]

Les langues humaines n'ont pas toutes la même convention pour la transcription des nombres.

Le produit de trois par sept a la même valeur en France et en Allemagne. Ce nombre se prononce « vingt-et-un » en français (ce qui correspond à une convention gros-boutiste) ; en allemand, il se dit « einundzwanzig », c'est-à-dire « un et vingt ». Dans chacune de ces langues, la convention d'écriture en toutes lettres reflète la prononciation orale.

En arabe, quand on écrit un nombre en chiffres en suivant le sens habituel d'écriture de l'arabe, on commence par écrire le chiffre des unités, puis celui des dizaines, pour finir avec le chiffre de poids le plus fort : ce qui est analogue à une convention petit-boutiste. Comme l'arabe s'écrit de droite à gauche, le chiffre des unités est à droite de la page. À l'opposé, pour écrire un nombre en chiffres dans un texte en français, on commence par le chiffre de poids le plus fort, pour terminer par le chiffre des unités : c'est donc une convention gros-boutiste, par rapport au sens d'écriture usuel du français. Néanmoins, comme le français et l'arabe s'opposent à la fois sur le boutisme et sur leur sens d'écriture usuel, dans les deux cas, le chiffre des unités est à droite de la page, et le chiffre de poids le plus fort se trouve à gauche.

Écriture des dates[modifier | modifier le code]

Certains pays ont des standards concernant l'écriture des dates. La notion de boutisme y est présente comme le montrent les exemples suivants :

Notes et références[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. Le voyage de Gulliver à Lilliput traduit sur Wikisource.
  2. Le débat n’est pas encore tranché, la guerre entre les boutistes et les boutiens, sur les forums et listes de discussions Internet, n’étant pas moins féroce qu’à Lilliput, et les partisans de chaque camp prenant référence de chaque côté à une traduction française publiée ou une autre des mêmes Voyages de Gulliver !

Références[modifier | modifier le code]

  1. a et b Danny Cohen: On Holy Wars and a Plea for Peace. IETF, avril 1980.
  2. texte original sur wikisource.
  3. Jonathan Swift, « CHAPITRE IV. », dans Les Voyages de Gulliver : Voyage à Lilliput, Hiard, (lire en ligne), p. 51–60.
  4. « mode gros-boutiste », sur gdt.oqlf.gouv.qc.ca (consulté le ).
  5. « mode petit-boutiste », sur gdt.oqlf.gouv.qc.ca (consulté le ).
  6. (en) Michael Barr et Anthony Massa, Programming Embedded Systems : With C and GNU Development Tools, O'Reilly Media, Inc., (lire en ligne).
  7. « Debian -- Lexique », sur debian.org (consulté le ).

Voir aussi[modifier | modifier le code]

Article connexe[modifier | modifier le code]

Lien externe[modifier | modifier le code]