17Aug

Warum zählen Computer von Null?

click fraud protection


Das Zählen von Null ist in vielen Computersprachen eine gängige Praxis, aber warum? Lesen Sie weiter, wenn wir das Phänomen erforschen und warum es so weit verbreitet ist.

Die heutige Frage &Die Antwortsitzung kommt dank SuperUser, einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites, zu uns.

Die Frage

SuperUser Reader DragonLord ist neugierig darauf, warum die meisten Betriebssysteme und Programmiersprachen von Null an zählen. Er schreibt:

Computer zählen traditionell numerische Werte ab Null. Zum Beispiel beginnen Arrays in C-basierten Programmiersprachen mit dem Index Null.

Welche historischen Gründe gibt es dafür, und welche praktischen Vorteile haben das Zählen von Null über das Zählen von einem?

Warum in der Tat? So weit verbreitet die Praxis ist, es gibt sicherlich praktische Gründe für ihre Umsetzung.

Der Antwort-

-SuperUser-Mitwirkende Matteo bietet die folgenden Erkenntnisse:

Das Zählen von Arrays von 0 vereinfacht die Berechnung der Speicheradresse jedes Elements.

instagram viewer

Wenn ein Array an einer bestimmten Position im Speicher gespeichert wird( es heißt die Adresse), kann die Position jedes Elements als

Element( n) = Adresse + n * Größe des Elements

berechnet werden. Wenn Sie das erste Element als erstes betrachten, dann die Berechnungwird

Element( n) = Adresse +( n-1) * size_of_the_element

Kein großer Unterschied, aber es fügt für jeden Zugriff eine unnötige Subtraktion hinzu.

Bearbeitet zum Hinzufügen:

  • Die Verwendung des Array-Index als Offset ist keine Voraussetzung, sondern nur eine Angewohnheit. Der Offset des ersten Elements könnte vom System ausgeblendet und beim Zuordnen und Referenzieren des Elements berücksichtigt werden.
  • Dijkstra veröffentlichte ein Papier mit dem Titel "Warum die Nummerierung bei Null beginnen sollte"( pdf), wo er erklärt, warum man mit 0 beginnen sollte. Der Start bei Null erlaubt eine bessere Darstellung der Bereiche.

Wenn Sie tiefer in die Antwort eintauchen möchten, ist das Dijkstra-Papier eine informative Lektüre.

Haben Sie etwas zur Erklärung hinzuzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange Benutzern lesen? Sehen Sie sich den vollständigen Diskussionsfaden hier an.