Hjemmeside » hvordan » Hvorfor tæller computere fra nul?

    Hvorfor tæller computere fra nul?


    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 med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

    Spørgsmålet

    SuperUser læser DragonLord er nysgerrig efter, hvorfor de fleste operativsystemer og programmeringssprog tæller fra nul. Han skriver:

    Computere traditionelt tæller numeriske værdier startende 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 fra nul, har over at regne fra en?

    Hvorfor faktisk? Som udbredt som praksis er der helt sikkert praktiske årsager til dens gennemførelse.

    Svaret

    SuperUser bidragyder Matteo tilbyder følgende indsigter:

    Tæller arrays fra 0 forenkler beregningen af ​​hukommelsesadressen for hvert element.

    Hvis et array er gemt på en given position i hukommelsen (det kaldes adressen) kan placeringen af ​​hvert element beregnes som

    element (n) = adresse + n * size_of_the_element 

    Hvis du overvejer det første element først, bliver beregningen

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

    Ikke en stor forskel, men det tilføjer en unødvendig subtraktion for hver adgang.

    Redigeret for at tilføje:

    • Anvendelsen 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 starter med 0 er et bedre valg. Starter ved nul giver mulighed for en bedre repræsentation af intervaller.

    Hvis du søger 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.