Laskeminen nollasta on hyvin yleinen käytäntö monilla tietokoneilla, mutta miksi? Lue, kun tutkitaan ilmiötä ja miksi se on niin yleistä.
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.
SuperUser-lukija DragonLord on utelias, miksi useimmat käyttöjärjestelmät ja ohjelmointikielet laskevat nollasta. Hän kirjoittaa:
Tietokoneet perinteisesti numeeriset arvot alkavat nollasta. Esimerkiksi C-pohjaisten ohjelmointikielten ryhmät alkavat nolla-indeksistä.
Mitä historiallisia syitä tähän liittyy ja mitä käytännön etuja nollasta lasketaan yli laskenta yhdestä?
Miksi todellakin? Niin laaja kuin käytännössä on, käytännössä on olemassa käytännön syitä sen toteuttamiseen.
SuperUser-avustaja Matteo tarjoaa seuraavat oivallukset:
Laskujen laskeminen 0: sta yksinkertaistaa kunkin elementin muistiosoitteen laskemista.
Jos taulukko tallennetaan tietyssä paikassa muistiin (sitä kutsutaan osoitteeksi), kunkin elementin sijainti voidaan laskea kuten
elementti (n) = osoite + n * koko_elementti
Jos pidät ensimmäisen elementin ensimmäisenä, laskenta tulee
elementti (n) = osoite + (n-1) * koko_elementti
Ei ole valtava ero, mutta se lisää tarpeetonta vähennyslaskua kullekin käyttöoikeudelle.
Muokattu lisätäksesi:
- Taulukkoindeksin käyttäminen offsetina ei ole vaatimus vaan vain tapana. Järjestelmä voi piilottaa ensimmäisen elementin offsetin ja ottaa huomioon elementin allokoinnin ja viittauksen yhteydessä.
- Dijkstra julkaisi paperin "Miksi numerointi tulisi aloittaa nollaan" (pdf), jossa hän selvittää, miksi aloittaminen alkaen 0 on parempi vaihtoehto. Nolla-arvosta alkaen mahdolli- suus näyttää paremmin alueita.
Jos etsit syventää vastausta, Dijkstra-paperi on informatiivinen lukeminen.
Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.