Proč počítají počítače od nuly?
Počítání od nuly je velmi běžná praxe v mnoha počítačových jazycích, ale proč? Přečtěte si, jak prozkoumáme fenomén a proč je tak rozšířený.
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Otázka
Čtecí zařízení DragonLord SuperUser je zvědavá, proč většina operačních systémů a programovacích jazyků počítá od nuly. Napsal:
Počítače tradičně spojují číselné hodnoty od nuly. Například pole v programovacích jazycích založených na C začínají od indexu nula.
Jaké to existují historické důvody a jaké praktické výhody počítá od nuly, které počítá od jednoho?
Proč vlastně? Stejně jako v praxi je to jistě, existují praktické důvody pro její zavedení.
Odpověď
Contributor společnosti SuperUser Matteo nabízí následující informace:
Počítání polí z 0 zjednodušuje výpočet adresy paměti každého prvku.
Pokud je pole uloženo na danou pozici v paměti (nazývá se adresou), může být poloha každého prvku vypočítána jako
element (n) = adresa + n * size_of_elementu
Pokud považujete první prvek za první, výpočet se stává
element (n) = adresa + (n-1) * velikost prvku
Není to obrovský rozdíl, ale přidává zbytečné odečtení pro každý přístup.
Přidáno:
- Použití indexu pole jako offset není požadavek, ale jen zvyk. Posun prvního prvku by mohl být skrytý systémem a vzat v úvahu při přidělování a odkazování na prvek.
- Dijkstra publikoval článek "Proč číslování by mělo začít od nuly" (pdf), kde vysvětluje, proč začíná s 0 je lepší volbou. Počínaje nulou umožňuje lepší zobrazení rozsahů.
Pokud hledáte hlouběji do odpovědi, dokument Dijkstra je informativní čtení.
Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.