Pagrindinis » kaip » Kodėl kompiuteriai skaičiuoja nuo nulio?

    Kodėl kompiuteriai skaičiuoja nuo nulio?


    Skaičiavimas iš nulio yra labai paplitusi praktika daugelyje kompiuterių kalbų, bet kodėl? Skaitykite, kaip mes tyrinėjame šį reiškinį ir kodėl jis taip paplitęs.

    Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.

    Klausimas

    „SuperUser“ skaitytojas „DragonLord“ smalsu, kodėl daugelis operacinių sistemų ir programavimo kalbų skaičiuojasi nuo nulio. Jis rašo:

    Kompiuteriai tradiciškai atitinka skaitines vertes, pradedant nuo nulio. Pavyzdžiui, C-programavimo kalbų matricos prasideda nuo nulio.

    Kokios yra istorinės priežastys, ir kokie praktiniai privalumai yra skaičiuojant nuo nulio, skaičiuojant nuo vieno?

    Kodėl iš tikrųjų? Kaip plačiai paplitusi praktika, tikrai yra praktinių jos įgyvendinimo priežasčių.

    Atsakymas

    „SuperUser“ dalyvis Matteo siūlo šias įžvalgas:

    Skaičiavimo matricos nuo 0 supaprastina kiekvieno elemento atminties adreso skaičiavimą.

    Jei masyvas yra saugomas tam tikroje atminties vietoje (vadinamas adresu), kiekvieno elemento padėtis gali būti apskaičiuota kaip

    elementas (n) = adresas + n * size_of_the_element 

    Jei pirmąjį elementą laikote pirmuoju, skaičiavimas tampa

    elementas (n) = adresas + (n-1) * dydis_pasir 

    Tai nėra didžiulis skirtumas, tačiau jis suteikia nereikalingą atėmimą kiekvienai prieigai.

    Redaguota, kad pridėtumėte:

    • Masyvo indekso naudojimas kaip kompensavimas nėra reikalavimas, o tik įprotis. Pirmojo elemento nuokrypis gali būti paslėptas sistemoje ir į jį bus atsižvelgta skirstant ir nurodant elementą.
    • Dijkstra paskelbė dokumentą „Kodėl numeravimas turėtų prasidėti nuo nulio“ (pdf), kuriame jis paaiškina, kodėl pradedant nuo 0 yra geresnis pasirinkimas. Pradedant nuo nulio, galima geriau rodyti diapazonus.

    Jei ieškote giliau į atsakymą, „Dijkstra“ popierius yra informacinis skaitymas.


    Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.