17Aug
Nollasta laskeminen on hyvin yleinen käytäntö useilla tietokoneilla, mutta miksi? Lue, kun tutkitaan ilmiötä ja miksi se on niin yleistä.
Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.
Kysymys
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 hyötyjä 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.
Vastaus
SuperUser-avustaja Matteo tarjoaa seuraavat oivallukset:
Laskentatyöt 0: stä yksinkertaistaa kunkin elementin muistin osoitteen laskemista.
Jos taulukko tallennetaan tietyssä paikassa muistiin( sitä kutsutaan osoitteeksi), jokaisen elementin paikka voidaan laskea
-elementiksi( n) = osoite + n * koko_taulukkoJos tarkastellaan ensimmäisen elementin ensimmäistä, laskentatulee
-elementti( n) = osoite +( n-1) * koko_elementtiEi ole valtava ero, mutta se lisää tarpeettoman vähennyksen kullekin käyttöoikeudelle.
Muokattu lisätäksesi:
- Taulukkoindeksin käyttäminen offsetina ei ole vaatimus vaan vain tapa. Järjestelmä voi piilottaa ensimmäisen elementin offsetin ja ottaa huomioon elementin allokoinnin ja viittauksen yhteydessä.
- Dijkstra julkaisi paperin "Miksi numeroinnin pitäisi alkaa nollasta"( pdf), jossa hän selittää, miksi aloittaminen alkaen 0 on parempi vaihtoehto. Nolla-arvosta alkaen mahdolli- suus näyttää paremmin alueita.
Jos haluat etsiä syvempää vastausta, Dijkstra-paperi on informatiivinen luettava.
Onko sinulla jotain lisättävää selitystä?Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.