Pourquoi le petit et le grand endian sont-ils toujours 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 passions tous à l'un et que nous nous en tenions à cela?
Réponses
Trop de publicités?Lors de l'ajout de deux numéros (sur papier ou dans une machine), vous commencez avec le moins de chiffres significatifs et de travailler à les chiffres les plus significatifs. (En va de même pour de nombreuses autres opérations).
Sur l'Intel 8088, qui avait registres 16 bits mais un 8-bit bus de données, cours de little-endian permis que de telles instructions pour commencer l'opération après le premier cycle de la mémoire. (Bien sûr, il devrait être possible pour la mémoire de l'extrait d'un mot à faire dans l'ordre décroissant, plutôt que d'augmenter mais je crois que cela aurait compliqué la conception un peu.)
Sur la plupart des processeurs, l'autobus de la largeur correspond à la largeur de registre donc, ce n'est plus lui confère un avantage.
Big-endian numéros, d'autre part, peuvent être comparés en commençant par le bit de poids fort (bien que beaucoup comparent les instructions de réellement faire une soustraction qui doit commencer avec le bit de poids faible de toute façon). Le bit de signe est aussi très facile à obtenir.
Existe-il des algorithmes ou de stockage les formats de mieux travailler avec l'un et bien pire avec les autres?
Pas de. Il y a des petits avantages ici et là, mais rien de majeur.
En fait, je pense litte-endian est plus naturelle et cohérente: la signification d'un bit est 2 ^ (bit_pos + 8 * byte_pos). Alors qu'avec avec big endian la signification d'un bit est 2 ^ (bit_pos + 8 * (word_size - byte_pos - 1)).
Ne serait-il pas mieux si nous sommes tous passés à l'un et rester avec elle?
En raison de la domination des x86, nous avons définitivement tournées vers little-endian. Les puces ARM dans de nombreux appareils mobiles sont configurables endianness, mais sont souvent LE plus compatible avec le processeur x86 monde. Ce qui est bien pour moi.
Little Endian fait typecasts plus facile. Par exemple, si vous avez un nombre sur 16 bit, vous pouvez simplement les traiter de la même adresse mémoire comme un pointeur vers un nombre de 8 bits, car il contient le moins de 8 bits. Si vous n'avez pas besoin de connaître précisément le type de données à traiter (bien que dans la plupart des cas, vous ne connaissez de toute façon).
Big Endian est un peu plus lisible. Bits sont stockés dans la mémoire tels qu'ils apparaissent dans l'ordre logique (la plus importante des valeurs de première), tout comme pour tout être humain, numéro utilisé en système.
En temps de beaucoup, beaucoup de couches d'abstraction de ces arguments ne compte pas plus que. Je pense que la principale raison pour laquelle nous ont encore tant est que personne ne veut changer. Il n'y a pas de raison évidente pour les deux systèmes, donc pourquoi changer quoi que ce soit si votre ancien système fonctionne parfaitement bien?