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

Die heutige Question & Answer-Sitzung wird von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

Die Frage

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

Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.

What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?

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

Die Antwort

SuperUser-Mitwirkender Matteo bietet folgende Einblicke:

Counting arrays from 0 simplifies the computation of the memory address of each element.

If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as

element(n) = address + n * size_of_the_element

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

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

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

Zum Hinzufügen hinzugefügt:

  • Die Verwendung des Array-Index als Offset ist keine Anforderung, sondern eine Gewohnheit. Der Versatz des ersten Elements könnte vom System ausgeblendet und bei der Zuordnung und Referenzierung des Elements berücksichtigt werden.
  • Dijkstra veröffentlichte einen Artikel „Warum Nummerierung bei Null beginnen sollte“ (pdf), in dem er erklärt, warum der Start mit 0 die bessere Wahl ist. Start bei Null ermöglicht 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 aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.

Top-Tipps:
Kommentare: