17Aug

Zašto računare računaju od nula?

Brojanje od nule je vrlo uobičajena praksa na mnogim računalnim jezicima, ali zašto? Pročitajte kako istražujemo fenomen i zašto je tako rasprostranjena.

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 elementa

Ako uzmete u obzir prvi element prvi, izračunpostaje

element( n) = adresa +( n-1) * veličina elementa

Nije 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.