Hvorfor regner datamaskiner fra null?

Innholdsfortegnelse:

Hvorfor regner datamaskiner fra null?
Hvorfor regner datamaskiner fra null?

Video: Hvorfor regner datamaskiner fra null?

Video: Hvorfor regner datamaskiner fra null?
Video: How to Import and Export Contacts in Outlook - YouTube 2024, April
Anonim
 Å telle fra null er en vanlig praksis i mange dataspråk, men hvorfor? Les videre når vi undersøker fenomenet og hvorfor det er så utbredt.
Å telle fra null er en vanlig praksis i mange dataspråk, men hvorfor? Les videre når vi undersøker fenomenet og hvorfor det er så utbredt.

Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

Spørsmålet

SuperUser leser DragonLord er nysgjerrig på hvorfor de fleste operativsystemer og programmeringsspråk teller fra null. Han skriver:

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?

Hvorfor faktisk? Like utbredt som øvelsen er det sikkert at det er praktiske årsaker til implementeringen.

Svaret

SuperUser-bidragsyter Matteo tilbyr følgende innsikt:

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

Hvis du vurderer det første elementet først, blir beregningen

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

Ikke en stor forskjell, men det legger til en unødig subtraksjon for hver tilgang.

Redigeres for å legge til:

  • Bruken av arrayindeksen som en offset er ikke et krav, men bare en vane. Forskjellen fra det første elementet kan være skjult av systemet og tatt i betraktning ved tildeling og referanseelement.
  • Dijkstra publiserte et papir "Hvorfor nummerering skal starte på null" (pdf) hvor han forklarer hvorfor å starte med 0 er et bedre valg. Starter ved null gir en bedre representasjon av intervaller.

Hvis du ønsker å dype dypere inn i svaret, er Dijkstra-papiret en informativ lesning.

Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.

Anbefalt: