« boutisme » : différence entre les versions
Contenu supprimé Contenu ajouté
L'endianness s'applique aussi aux bits et aux processeurs |
wikif, typo |
||
Ligne 1 :
En [[informatique]], certaines données telles que les nombres [[entier (informatique)|entier]]s peuvent être représentées sur plusieurs [[octet]]s. L'ordre dans lequel ces octets sont organisés en mémoire ou dans une communication est appelé '''''endianness''''' (mot [[anglais
De la même manière que certains langages humains s'écrivent de gauche à droite, et d'autres s'écrivent de droite à gauche<ref>Les langages qui s'écrivent de haut en bas ne représentent pas une catégorie différente, du point de vue logique. L'organisation des données par rapport à la page qui les contient est identique, à une rotation près. (C’est-à-dire que les données de poids forts par rapport à l'orientation de la page sont toujours dans l'une ou l'autre de ces catégories)</ref>, il existe une alternative majeure à l'organisation des octets représentant une donnée : l'orientation '''''big-endian''''' et l'orientation '''''little-endian'''''. Ces expressions sont parfois traduites par '''gros-boutiste''' et '''petit-boutiste'''<ref>Des étymologistes ont proposé à ceux qui s’opposent à l’emploi d’un double adjectif dans un mot composé formant un autre adjectif, d’utiliser les termes '''maxiboutiste''' et '''miniboutiste''' au lieu de '''petit-boutiste''' et '''gros-boutiste''', à l’aide des préfixes latins usuels de façon similaire aux termes maximaliste et minimaliste. D’autres encore proposent et défendent le suffixe « -ien » au lieu de « -iste », mais ne proposent pas de solution pour le suffixe associé à « boutisme » dont l’usage est déjà attesté dans des mots composés et les termes synonymes '''petit-boutien''' et '''gros-boutien''' sont donc encore moins utilisés. Le débat n’est pas encore tranché, la guerre entre les boustistes 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 !</ref>. Les expressions '''''byte order''''', d’'''ordre des octets''' ou de '''''byte sex''''' sont également utilisées (bien que faisant référence à des unités d’une base numérale précise sur 8 bits, que le terme ''endianness'' plus général ne traduit pas).
Ligne 5 :
L'endianness qualifie aussi bien un fichier (dans lequel ce sont les octets qui sont ordonnés différemment) qu'un processeur (dans lequel la gestion des bits a aussi un ordre).
== Étymologie ==▼
== Dans les [[ordinateur]]s ==▼
Quand certains ordinateurs enregistrent un entier sur 32 [[Bit (informatique)|bits]] 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 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 <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.▼
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.▼
▲Quand certains
{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
Ligne 25 ⟶ 30 :
|}
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 : <code>A0B7 0708</code>. L'unité atomique de poids le plus fort (ici <code>A0B7</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"
Ligne 65 ⟶ 70 :
|}
Pour une structure de mémoire ou un protocole de communication basé sur une unité atomique de 2
{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
Ligne 86 ⟶ 91 :
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, plus rarement, '''biboutistes'''. Le choix du mode peut se faire au niveau logiciel, au niveau matériel ou aux deux.
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 <code>0xA0B70708</code> 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 : <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"
Ligne 128 ⟶ 133 :
|}
1. dans une mémoire little-endian avec ''byte-swap'', 2
{| border="1" cellpadding=4 style="border: 1px solid #ffffff; background-color: #ffffff; border-collapse: collapse; margin: 0.4em 0.4em; text-align: center"
|-
Ligne 172 ⟶ 177 :
Il est plus difficile de travailler avec de tels processeurs, les [[PDP-11]] par exemple.
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.
Un moyen mnémotechnique pour ne pas
* «
▲« small head » pour les bits de poids « faible en tête »
== 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
mot entier de 16 bits sur une machine de convention différente, alors on obtient NUXI. Ce problème a été
Ligne 190 ⟶ 191 :
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 quel que soit l'''endianness'' 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
== Différences pratiques ==
Ligne 196 ⟶ 197 :
Bien que la différence entre les deux modes ''big-endian'' et ''little-endian'' semble aujourd'hui minime et se limite à un problème de convention, on peut signaler des avantages liés à chacun :
Les nombres ''big-endian'' sont plus faciles à lire lorsqu'on [[
Le mode ''little-endian'' présentait des avantages lorsque les processeurs utilisaient des tailles de [[
En général, on dit que l'on préfère l'une ou l'autre des représentations suivant celle que l'on a étudiée en premier.
== 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 se soucie pas de la convention.
Bien sûr 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 le groupe linguistique germanique, anglais ou autre, n'ont pas la même perception.
== Écriture des nombres dans les langues humaines ==
Le problème du choix du sens d'écriture se pose aussi pour l'écriture des nombres en notation positionnelle dans les langues humaines.
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. (
== Écriture des dates ==
Certains pays ont des standards concernant l'écriture des dates. La notion d'endianness y est présente comme le montrent les exemples suivants:▼
* [[Europe]]: JJ/MM/AAAA (little endian)▼
* [[Japon]]: AAAA/MM/JJ (big endian)▼
* [[États-Unis]]: MM/JJ/YYYY (middle endian)▼
▲Certains pays ont des standards concernant l'écriture des dates. La notion d'endianness y est présente comme le montrent les exemples suivants :
▲== Étymologie ==
▲* [[Europe]] : JJ/MM/AAAA (little endian)
▲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.
▲* [[Japon]] : AAAA/MM/JJ (big endian)
== Voir aussi ==▼
=== Notes et références ===
<references />▼
=== Articles connexes ===▼
▲= Voir aussi =
▲== Articles connexes ==
* [[Alignement de données]]
===
*{{en}} {{pdf}} [http://3bc.bertrand-blanc.com/endianness05.pdf White Paper: Endianness or Where is Byte 0?].▼
▲* {{en}} {{pdf}} [http://3bc.bertrand-blanc.com/endianness05.pdf White Paper: Endianness or Where is Byte 0?]
▲<references />
{{Portail informatique}}
[[Catégorie:Architecture informatique]]
|