17Aug
Današnje pitanje &Sesija odgovora nam dolazi zahvaljujući SuperUseru - podjele Stack Exchange, grupiranjem zajednice Q & A web stranica.
Pitanje
SuperUser čitač DragonLord je znatiželjan o tome zašto većina operativnih sustava i programskih jezika računaju od nule. On piše:
Računala tradicionalno bilježe numeričke vrijednosti počevši od nule. Na primjer, polja u programskim jezicima temeljenim na C početi su od nule indeksa.
Koji povijesni razlozi za to postoje, a koje praktične prednosti računaju od nule imaju prebrojavanje od jednog?
Zašto doista? Kao što je široko rasprostranjena kao i praksa, sigurno postoje praktični razlozi za njegovu provedbu.
Odgovor
SuperUser suradnik Matteo nudi sljedeće uvide:
Brojanje polja od 0 pojednostavljuje izračunavanje memorijske adrese svakog elementa.
Ako je polje pohranjeno na zadanom položaju u memoriji( naziva se adresa) položaj svakog elementa može se izračunati kao
element( n) = adresa + n * veličina elementaAko uzmete u obzir prvi element prvi, izračunpostaje
element( n) = adresa +( n-1) * veličina elementaNije velika razlika, ali dodaje nepotrebnu oduzimanju za svaki pristup.
Uredeno za dodavanje:
- Upotreba indeksa polja kao offset nije uvjet, već samo navika. Razmak prvog elementa može biti skriven od strane sustava i uzeti u obzir prilikom dodjele i reference elementa.
- Dijkstra je objavio rad "Zašto bi brojanje trebalo početi od nule"( pdf) gdje objašnjava zašto je početak s 0 bolji izbor. Polazeći od nula omogućava bolju zastupljenost raspona.
Ako želite uletjeti dublje u odgovor, Dijkstra papir je informativan čitak.
Imate li što dodati objašnjenju? Zvuči u komentarima.Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.