Domača » kako » Zakaj računalniki računajo od nič?

    Zakaj računalniki računajo od nič?


    Štetje od nič je zelo pogosta praksa v mnogih računalniških jezikih, toda zakaj? Preberite, ko raziskujemo pojav in zakaj je tako razširjen.

    Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki temelji na skupnostih spletnih mest za vprašanja in odgovore.

    Vprašanje

    Bralnik SuperUser DragonLord je radoveden, zakaj se večina operacijskih sistemov in programskih jezikov šteje od nič. On piše:

    Računalniki, ki se tradicionalno ujemajo z numeričnimi vrednostmi od nič. Na primer, nizi v programskih jezikih, ki temeljijo na C, se začnejo z indeksom nič.

    Kakšni zgodovinski razlogi za to obstajajo in kakšne praktične prednosti se šteje od nič, je več kot štetje od enega?

    Zakaj pravzaprav? Kot je praksa razširjena, zagotovo obstajajo praktični razlogi za njeno izvajanje.

    Odgovor

    Sodelavka SuperUser Matteo ponuja naslednje vpoglede:

    Štetje nizov iz 0 poenostavlja izračun pomnilnika vsakega elementa.

    Če je polje shranjeno na določenem mestu v pomnilniku (to se imenuje naslov), se lahko položaj vsakega elementa izračuna kot

    element (n) = naslov + n * velikost_izdelka 

    Če prvi element menite prvi, računanje postane

    element (n) = naslov + (n-1) * velikost_izdelka 

    Ni velika razlika, vendar dodaja nepotrebno odštevanje za vsak dostop.

    Urejeno za dodajanje:

    • Uporaba indeksa matrike kot offset ni zahteva, temveč le navada. Odmik prvega elementa lahko sistem skrije in upošteva pri dodeljevanju in navajanju elementa.
    • Dijkstra je objavil članek »Zakaj bi se številčenje začelo na nič« (pdf), kjer razloži, zakaj je začetek z 0 boljša izbira. Začetek pri ničli omogoča boljšo predstavitev območij.

    Če iščete, da se poglobite v odgovor, je papir Dijkstra informativen.


    Imate kaj dodati pojasnilu? Zvok izključen v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.