Kotisivu » miten » Miksi tietokoneet laskevat nollaa?

    Miksi tietokoneet laskevat nollaa?


    Nollasta laskeminen on hyvin yleinen käytäntö monissa tietokoneen kielissä, mutta miksi? Lue, kun tutkimme ilmiötä ja miksi se on niin laajalle levinnyt.

    Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..

    Kysymys

    SuperUser-lukija DragonLord on kiinnostunut siitä, miksi useimmat käyttöjärjestelmät ja ohjelmointikielet laskevat nollasta. Hän kirjoittaa:

    Tietokoneet perinteisesti vastaavat numeerisia arvoja nollasta alkaen. Esimerkiksi C-pohjaisten ohjelmointikielien taulukot alkavat indeksista nolla.

    Mitä historiallisia syitä tähän on, ja millaisia ​​käytännön etuja nollan laskemisesta on enemmän kuin yksi?

    Miksi todellakin? Kuten käytäntö on niin laajasti levinnyt, on varmasti käytännön syitä sen toteuttamiseen.

    Vastaus

    SuperUser-avustaja Matteo tarjoaa seuraavat tiedot:

    Laskentayksiköt 0: sta yksinkertaistaa kunkin elementin muistiosoitteen laskemista.

    Jos matriisi tallennetaan tietyssä asemassa muistiin (sitä kutsutaan osoitteeksi), kunkin elementin sijainti voidaan laskea

    elementti (n) = osoite + n * size_of_the_element 

    Jos pidät ensimmäistä elementtiä ensimmäisenä, laskenta tulee

    elementti (n) = osoite + (n-1) * koko_osio_elementti 

    Ei ole suuri ero, mutta se lisää tarpeettoman vähennyksen jokaisesta pääsystä.

    Muokattu lisättäväksi:

    • Ryhmäindeksin käyttö siirtymänä ei ole vaatimus vaan vain tapa. Ensimmäisen elementin poikkeama voi olla piilossa järjestelmässä ja se voidaan ottaa huomioon allokoitaessa ja viitattaessa elementtiin.
    • Dijkstra julkaisi paperin ”Miksi numerointi tulisi aloittaa nolla” (pdf), jossa hän selittää, miksi aloitus 0: lla on parempi valinta. Nollasta lähteminen mahdollistaa alueiden paremman esityksen.

    Jos etsit syvemmälle vastausta, Dijkstran paperi on informatiivinen.


    Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.