Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Boutisme

Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur la paronymie

Cet article possède unparonyme, voirBig Indian.

Schéma récapitulatif des modes de représentation.

Eninformatique, lenombre entier est untype de données qui est généralement représenté sur plusieursoctets. Leboutisme (endianness en anglais) ou plus rarementendianisme désigne l'ordre dans lequel ces octets sont placés. Il existe deux conventions opposées : l'orientationgros-boutiste (ou gros-boutienne ; en anglais, big-endian) qui démarre avec les octets de poids forts, et l'orientation inversepetit-boutiste (ou petit-boutienne ; en anglais, little-endian).

L'expression est utilisée de manière plus générale pour désigner l'ordre deschiffres dans unsystème de numérationpositionnel (par exemple celui desbits).

Le choix du boutisme est typiquement fixé par l'architecture du processeur, ou par leformat 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 anglaisbig-endian etlittle-endian, popularisés dans le domaine informatique par Dany Cohen[1], en référence auxVoyages de Gulliver, conte satirique deJonathan Swift. En 1721, Swift décrit comment de nombreux habitants deLilliput 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éebig-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 partisansbig-endian etlittle-endian au sein du groupe qui travaille sur lesprotocoles 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 termegros-boutien, par exemple dans le chapitre 4[3]. L'Office québécois de la langue française préconisegros-boutiste[4] etpetit-boutiste[5], ce qui conduit au nomboutisme pour traduireendianness[réf. nécessaire].

En informatique, il n'y a pas de préférence pour le suffixe-iste[N 2]. Le suffixe-iste fait référence à un partisan d'une doctrine, alors que-ien désigne plutôt un membre d'une communauté (à titre d'exemple, on ditlinuxien et nonlinuxiste). En l'occurrence, dans le contexte du conte,gros-boutiste est étymologiquement la traduction la plus appropriée.

Dans les ordinateurs

[modifier |modifier le code]

Gros-boutisme

[modifier |modifier le code]

Quand certainsordinateurs enregistrent un entier sur 32bits en mémoire, par exemple0xA0B70708 ennotation 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 (iciA0) est enregistré à l'adresse mémoire la plus petite, l'octet de poids inférieur (iciB7) est enregistré à l'adresse mémoire suivante et ainsi de suite.

0123
...A0B70708...

Pour une structure de mémoire ou unprotocole de communication fondé sur une unité atomique de 2 octets, avec un incrément d'adresse de 1 octet, l'enregistrement dans des octets seraA0B7 0708. L'unité atomique de poids le plus fort (iciA0B7) est enregistrée à l'adresse mémoire la plus petite.

0123
...A0B70708...

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 processeursMotorola 68000, lesSPARC (Sun Microsystems) ou encore lesSystem/370 (IBM).

De plus, tous les protocolesTCP/IP communiquent en gros-boutiste[6]. Il en va de même pour le protocolePCI Express.

Petit-boutisme

[modifier |modifier le code]

Les autres ordinateurs enregistrent0xA0B70708 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 processeursx86 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 (unHaswell typique comporte 1,4milliard de transistors).

0123
...0807B7A0...

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

0123
...0708A0B7...

Bi-boutisme

[modifier |modifier le code]

Certaines architectures supportent les deux règles, par exemple les architecturesPowerPC (IBM),ARM,DEC Alpha,MIPS,PA-RISC (HP) etIA-64 (Intel). On les appellebytesexual (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] oumiddle-endian, ont un ordonnancement plus complexe : les octets composant les unités atomiques subissent une opération d'inversion. Par exemple0xA0B70708 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 bienB7A0 0807.

0123
...0807B7A0...mi-boutiste, unité atomique 2 octets, incrément d'adresse 1 octet

ou alternativement

0123
...B7A00807...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 debyte-swap, plutôt que celui de mi-boutiste. L'exemple devient dès lors non ambigu :

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

0123
...0807B7A0...petit-boutiste,byte-swap, unité atomique 2 octets, incrément d'adresse 1 octet

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

0123
...B7A00807...gros-boutiste,byte-swap, unité atomique 2 octets, incrément d'adresse 1 octet

Il est plus difficile de travailler avec de tels processeurs, lesPDP-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 lanumé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 bitn 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 bitn étant alors 2-n (contre 2n-7 pour petit-boutiste).

Un moyenmné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 :

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 parmot 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'unPDP-11mi-boutiste sur une architectureIBM gros-boutiste.

Le protocole IP définit un standard, lenetwork 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 lacouche de liaison dumodè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 deregistre variables, c’est-à-dire 8, 16 ou 32 bits. À partir d'uneadresse mémoire donnée, on pouvait lire le même nombre en lisant 8, 16 ou 32 bits.

Par exemple, le nombre 33 (0x21 enhexadécimal) s'écrit2100 0000 en petit-boutiste sur 32 bits et2100 en petit-boutiste sur 16 bits, ce qui se lit toujours21 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 dedumps 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 enhexadécimal) s'écrit0001 5665 en gros-boutiste sur 32 bits, ce qui correspond à l'écriture usuelle dans leslangues indo-européennes. Ce n'est pas le cas avec le mode petit-boutiste, dans lequel le même nombre s'écrit6556 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 anombre 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êmesVoyages de Gulliver !

Références

[modifier |modifier le code]
  1. a etbDanny Cohen:On Holy Wars and a Plea for Peace.IETF, avril 1980.
  2. texte original sur wikisource.
  3. JonathanSwift,« CHAPITRE IV. », dansLes Voyages de Gulliver : Voyage à Lilliput, Hiard,(lire en ligne),p. 51–60.
  4. « mode gros-boutiste », surgdt.oqlf.gouv.qc.ca(consulté le).
  5. « mode petit-boutiste », surgdt.oqlf.gouv.qc.ca(consulté le).
  6. (en) MichaelBarr et AnthonyMassa,Programming Embedded Systems : With C and GNU Development Tools, O'Reilly Media, Inc.,(lire en ligne).
  7. « Debian -- Lexique », surdebian.org(consulté le).

Voir aussi

[modifier |modifier le code]

Article connexe

[modifier |modifier le code]

Lien externe

[modifier |modifier le code]
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Boutisme&oldid=223359514 ».
Catégorie :
Catégories cachées :

[8]ページ先頭

©2009-2025 Movatter.jp