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:
Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.
What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?
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:
Counting arrays from 0 simplifies the computation of the memory address of each element.
If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as
element(n) = address + n * size_of_the_element
Ako najprije uzmete prvi element, računanje postaje
element(n) = address + (n-1) * size_of_the_element
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.