Pourquoi les petits et les grands boudins sont-ils utilisés?

Pourquoi les petits et les grands boudins sont-ils encore utilisés aujourd'hui, Après environ 40 ans d'informatique binaire? Existe-t-il des algorithmes ou des formats de stockage qui fonctionnent mieux avec l'un et bien pire avec l'autre? Ne serait-il pas préférable que nous commencions tous à un et de rester avec elle?

41
demandé sur orlp 2011-01-21 00:20:06

3 réponses

Lorsque vous ajoutez deux nombres (sur papier ou dans une machine), vous commencez par les chiffres les moins significatifs et vous travaillez vers les chiffres les plus significatifs. (En va de même pour de nombreuses autres opérations).

Sur L'Intel 8088, qui avait des registres 16 bits mais un bus de données 8 bits, être little-endian permettait à de telles instructions de commencer à fonctionner après le premier cycle de mémoire. (Bien sûr, il devrait être possible que les récupérations de mémoire d'un mot soient faites dans l'ordre décroissant plutôt que d'augmenter mais je soupçonne cela aurait compliqué un peu la conception.)

Sur la plupart des processeurs, la largeur du bus correspond à la largeur du registre, ce qui ne confère plus d'avantage.

Les nombres Big-endian, d'autre part, peuvent être comparés en commençant par le MSB (bien que beaucoup d'instructions de comparaison fassent réellement une soustraction qui doit commencer par le LSB de toute façon). Le bit de signe est également très facile à obtenir.

Existe-t-il des algorithmes ou du stockage formats qui fonctionnent mieux avec un et bien pire avec de l'autre?

Non. Il y a de petits avantages ici et là mais rien de majeur.

En fait, je pense que litte-endian est plus naturel et cohérent: la signification d'un bit est 2 ^ (bit_pos + 8 * byte_pos). Alors qu'avec avec big endian la signification d'un peu est 2 ^ (bit_pos + 8 * (word_size - byte_pos - 1)).

Ne serait-il pas préférable que nous commencions tous à un et à rester avec elle?

En raison de la domination de x86, nous avons certainement gravité vers little-endian. Les puces ARM dans de nombreux appareils mobiles ont endianness configurable, mais sont souvent mis à LE pour être plus compatible avec le monde x86. Ce qui est bien pour moi.

30
répondu Artelius 2011-01-20 22:46:28

Little Endian facilite les typecasts. Par exemple, si vous avez un nombre de 16 bits, vous pouvez simplement traiter la même adresse mémoire comme un pointeur vers un nombre de 8 bits, car il contient les 8 bits les plus bas. Vous n'avez donc pas besoin de connaître le type de données exact que vous traitez (bien que dans la plupart des cas, vous le sachiez de toute façon).

Big Endian est un peu plus lisible par l'homme. Les Bits sont stockés en mémoire tels qu'ils apparaissent dans l'ordre logique (les valeurs les plus significatives en premier), tout comme pour tout nombre utilisé par l'homme système.

Dans les temps de beaucoup, beaucoup de couches d'abstraction, ces arguments ne comptent plus vraiment. Je pense que la principale raison pour laquelle nous avons encore les deux est que personne ne veut changer. Il n'y a aucune raison évidente pour l'un ou l'autre système, alors pourquoi changer quoi que ce soit si votre ancien système fonctionne parfaitement?

13
répondu Daniel Stelter 2011-01-20 22:09:13

Grand et petit boudian ont leurs avantages et leurs inconvénients. Même si l'on était clairement supérieur (ce qui n'est pas le cas), il n'y a aucun moyen qu'une architecture héritée puisse changer d'endianness, donc j'ai peur que vous deviez juste apprendre à vivre avec.

3
répondu Paul R 2011-01-20 21:23:23