If-Koubou

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

Zašto računare računaju od nula? (Kako da)


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

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

SuperUser čitač DragonLord znatiželjan je zašto se većina operacijskih sustava i programskih jezika računaju od nule. Piše:

Računala tradicionalno broje 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 postoje za to, 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 određenom mjestu u memoriji (naziva se adresa), položaj svakog elementa može se izračunati kao

element (n) = adresa + n * veličina_za_elementa 

Ako najprije uzmete prvi element, računanje postaje

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

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 na nuli" (pdf) gdje objašnjava zašto je počevši s 0 bolji izbor. Polazeći od nula omogućava bolju zastupljenost raspona.

Ako želite dublje ukrcati u odgovor, Dijkstraov tekst je informativno čitanje.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.