17Aug

Pourquoi les ordinateurs comptent-ils de zéro?


Compter à partir de zéro est une pratique très courante dans de nombreux langages informatiques, mais pourquoi? Lisez la suite pendant que nous explorons le phénomène et pourquoi il est si répandu.

Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

La question Lecteur

SuperUser DragonLord est curieux de savoir pourquoi la plupart des systèmes d'exploitation et des langages de programmation comptent à partir de zéro. Il écrit: Les ordinateurs

décrivent traditionnellement les valeurs numériques à partir de zéro. Par exemple, les tableaux dans les langages de programmation basés sur C commencent à partir de l'index zéro.

Quelles raisons historiques existent pour cela, et quels sont les avantages pratiques à compter de zéro?

Pourquoi en effet? Aussi répandue que soit la pratique, il y a sûrement des raisons pratiques à sa mise en œuvre.

La réponse

SuperUser contributeur Matteo offre les aperçus suivants:

Le comptage des tableaux à partir de 0 simplifie le calcul de l'adresse mémoire de chaque élément.

Si un tableau est stocké à une position donnée en mémoire( on appelle l'adresse) la position de chaque élément peut être calculée comme

élément( n) = adresse + n * taille_de_l'élément

Si vous considérez le premier élément le premier, le calculdevient

élément( n) = adresse +( n-1) * taille_de_l'élément

Pas une grosse différence mais cela ajoute une soustraction inutile pour chaque accès.

Edité pour ajouter:

  • L'utilisation de l'index de tableau comme offset n'est pas une exigence mais simplement une habitude. Le décalage du premier élément pourrait être masqué par le système et pris en compte lors de l'allocation et du référencement de l'élément.
  • Dijkstra a publié un article "Pourquoi la numérotation devrait commencer à zéro"( pdf) où il explique pourquoi commencer avec 0 est un meilleur choix. Commencer à zéro permet une meilleure représentation des plages.

Si vous cherchez à approfondir la réponse, le papier Dijkstra est une lecture informative.

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.