Warum wird in der Informatik bei Null angefangen zu zählen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

also das ist von den programmiersprachen abhängig , durchaus gibt es programmiersprachen die bei 1 anfangen zu zählen wenn es um elemente eines arrays geht .

aber wenn wir das mal von speicher addressierung aus sehen dann ist der start des speichers die speicheradresse und das erste element bei speicheradresse+0*strukturgröße , das nächste element dann bei speicheradresse+1*strukturgröße ...

und NULL ist wieder was ganz anderes als 0

Unterm Strich aus arithmetischen Gründen.

Zur Veranschaulichung:

Wenn ich einen Speicherblock habe, dann habe ich eine Startadresse (Basisadresse). Das erste Element liegt nunmal genau an der Basisadressen, was eben Basisadresse+0 ist.

Ich müßte also bei Indizierung ab 1 jedes mal den Offset bei Bestimmung der Adresse korrigieren, oder aber ich müßte sowas dreckiges machen, wie die Basisadresse zu transformieren, sodaß sie nicht mehr dem echten Startpunkt entspricht.

Beides wiederum erzeugt neue Probleme in der Praxis.

Apropos, an welchem Index steht noch gleich der Minutenzeiger zur vollen Stunde?

MasterKind 
Fragesteller
 09.01.2023, 06:47

Ich kann die "Basisadresse" einfach als 1 definieren. Der Vergleich mit dem Minutenzeiger hinkt auch. Da hat man keine Wahl. Bei der Speicheradresse hat man theoretisch die Wahl.

0
KarlRanseierIII  09.01.2023, 16:50
@MasterKind
Der Vergleich mit dem Minutenzeiger hinkt auch.

Das war kein Vergleich, sondern ein Beispiel einer weiteren Nutzung der gleichen Prinzipien. Du hättest die Chance nutzen und Dich in das Thema einarbeiten können.

Da hat man keine Wahl

Natürlich hat man, ich kann die Indices auch mit 1 bis 60 bezeichnen, es ist nur nich sonderlich praktisch, eben aus den arithmetischen Gründen.

Bei der Speicheradresse hat man theoretisch die Wahl

Nicht nur theoretisch, auch praktisch - aber eben mit den gleichen weitreichenden Folgen und Problemen. Mit n Adressleitungen kann ich nunmal 2^n Kombinationen mit dem Wertebereich 0..(2^n )-1 darstellen. In dem Moment wo ich eine künstliche Verschiebung einführe, lege ich mir selbst Steine in den Weg,

Ich kann die "Basisadresse" einfach als 1 definieren.

Man kann vieles machen, die Frage ist, ob es praktikabel, sinnvoll und zielführend ist.

Es gibt Sprachen, die ab 1 indizieren, meist an Anfänger gerichtet. Das mag auf den ersten Blick gut erscheinen, bis man eben die arithmetischen Probleme erkennt.

1
MasterKind 
Fragesteller
 09.01.2023, 17:19
@KarlRanseierIII

Ok, danke dir, dass du nochmal so gezielt auf meine "Bedenken" eingegangen bist. :)

0