Niveau :
Résumé : little endian, big endian
On nous parle souvent de problèmes de petits indiens et de grands indiens, hé bien c'est du flan, les indiens n'existent pas. Si on fait exception des mal comprenant, la traduction correcte est petit boutiens, et gros boutiens. L'information nous vient de Gulliver lorsqu'il est revenu de Lilliput. Il y a rencontré un peuple divisé en deux, les premiers prétendaient qu'un oeuf devait se tenir par le petit bout alors que les autres affirmaient le contraire (à moins que ce ne soit l'opposé).
Dans l'informatique, les guerres de religions sont du même style. Par exemple, comment écririez vous cent vingt trois ? Les gros boutiens (ou bien est-ce gros boutistes ?), diraient 123 alors que les petits boutiens diraient 321.
Les premiers affirment que c'est plus logique d'avoir d'abord l'ordre de grandeur, et ensuite l'information de précision. Les seconds disent qu'il est plus intéressant de pouvoir lire les nombres d'une longueur théoriquement indéfinie, puisqu'on peut ajouter des chiffres aussi longtemps qu'on lit. En fait la différence est essentiellement affaire de religion puisque les processeurs lisent toujours des entiers de taille fixe, bien qu'il puisse y avoir un léger avantage au développement d'un processeur compatible lisant des entiers plus gros (64 bits) sur une architecture little endian.
Mais qui fait partie de quelle église (quel endianness) ?
- x68 : little endian
- sparc : big endian
- powerPC : big endian
- ARM : agnostique, supporte les 2
- PDP-11 : bi, little et big endian simultanément selon les octets considérés
- IP : big endian
Hé oui, internet et quasiment tous les réseaux ont un ordre qui est le plus gros d'abord. C'est pourquoi les fonctions ntoh* et hton* ont été définies (network to hardware et inversement).
Voila, maintenant vous savez pourquoi vous ne pouvez pas simplement transporter votre base de données (ou votre tar) de votre pentium vers votre station sparc sans avoir de problèmes ...
Comments