Warum zählen Computer von Null?
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 dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.
Die Frage
SuperUser-Reader DragonLord ist neugierig, warum die meisten Betriebssysteme und Programmiersprachen von Null aus zählen. Er schreibt:
Computer zählen üblicherweise numerische Werte beginnend bei 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 von Null zu haben, hat eine von Null?
Warum eigentlich? So weit die Praxis verbreitet ist, gibt es sicherlich praktische Gründe für ihre Umsetzung.
Die Antwort
SuperUser-Mitwirkender Matteo bietet folgende Einblicke:
Das Zählen von Arrays von 0 vereinfacht die Berechnung der Speicheradresse jedes Elements.
Wenn ein Array an einer bestimmten Stelle im Speicher gespeichert wird (Adresse genannt), kann die Position jedes Elements als berechnet werden
Element (n) = Adresse + N * Größe_des_Elementes
Wenn Sie das erste Element als erstes betrachten, wird die Berechnung
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.
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 werden 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 der Erklärung etwas 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.