17Aug
At tælle fra nul er en meget almindelig praksis på mange computersprog, men hvorfor? Læs videre, da vi udforsker fænomenet og hvorfor det er så udbredt.
Dagens Spørgsmål &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.
Spørgsmål
SuperUser læser DragonLord er nysgerrig efter, hvorfor de fleste operativsystemer og programmeringssprog tæller fra nul. Han skriver:
Computers tæller traditionelt numeriske værdier fra nul. F.eks. Starter arrayer i C-baserede programmeringssprog fra indeks nul.
Hvilke historiske årsager er der for dette, og hvilke praktiske fordele tæller der fra nul, har man over at regne med?
Hvorfor faktisk? Som udbredt som praksis er der helt sikkert praktiske grunde til dens gennemførelse.
Svaret
SuperUser-bidragyder Matteo tilbyder følgende indsigter:
Tællearrayer fra 0 forenkler beregningen af hukommelsesadressen for hvert element.
Hvis et array er gemt i en given position i hukommelsen( det kaldes adressen) kan positionen for hvert element beregnes som
element( n) = adresse + n * size_of_the_elementHvis du overvejer det første element den første, beregningenbliver
element( n) = adresse +( n-1) * size_of_the_elementIkke en stor forskel, men det tilføjer en unødvendig subtraktion for hver adgang.
Redigeret for at tilføje:
- Brugen af array indekset som en forskydning er ikke et krav, men bare en vane. Forskydningen af det første element kunne være skjult af systemet og taget i betragtning ved tildeling og referenceelement.
- Dijkstra udgav et papir "Hvorfor nummerering skal starte ved nul"( pdf) hvor han forklarer hvorfor startende med 0 er et bedre valg. At starte ved nul giver mulighed for en bedre repræsentation af intervaller.
Hvis du ønsker at dykke dybere ind i svaret, er Dijkstra-papiret en informativ læsning.
Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.