Connect with us

Wie man

Warum zählen Computer von Null?

Warum zählen Computer von Null?

Das Zählen von Null ist in vielen Computersprachen sehr verbreitet, aber warum? Lesen Sie weiter, während wir das Phänomen untersuchen und warum es so weit verbreitet ist.

Die Frage

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

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

Welche historischen Gründe gibt es dafür und welche praktischen Vorteile hat das Zählen von Null gegenüber dem Zählen von Eins?

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

Die Antwort

Der SuperUser-Mitarbeiter Matteo bietet folgende Einblicke:

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

Wenn ein Array an einer bestimmten Position im Speicher gespeichert ist (es wird als Adresse bezeichnet), kann die Position jedes Elements als berechnet werden

element(n) = address + n * size_of_the_element

Wenn Sie das erste Element als das erste betrachten, wird die Berechnung

element(n) = address + (n-1) * size_of_the_element

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

Bearbeitet, um hinzuzufügen:

  • Die Verwendung des Array-Index als Offset ist keine Voraussetzung, sondern nur eine Gewohnheit. Der Versatz des ersten Elements könnte vom System ausgeblendet und beim Zuweisen und Referenzieren des Elements berücksichtigt werden.
  • Dijkstra veröffentlichte einen Artikel „Warum die Nummerierung bei Null beginnen sollte“ (pdf) wo er erklärt, warum es besser ist, mit 0 zu beginnen. Das Beginnen bei Null ermöglicht eine bessere Darstellung von Bereichen.

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

Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie weitere Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Den vollständigen Diskussionsthread finden Sie hier.

Continue Reading
Click to comment

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Tendencia