Homepage » hogyan kell » Miért számítanak a számítógépek a nullából?

    Miért számítanak a számítógépek a nullából?


    A nulláról való számítás nagyon gyakori gyakorlat számos számítógépes nyelven, de miért? Olvassa el a jelenséget és miért olyan elterjedt.

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    A kérdés

    A SuperUser olvasó DragonLord kíváncsi, hogy a legtöbb operációs rendszer és programozási nyelv nulla. Ír:

    A számítógépek hagyományosan a nullától kezdődő számértékek. Például a C-alapú programozási nyelvek tömbjei nullától kezdődnek.

    Milyen történelmi okok vannak erre, és milyen gyakorlati előnyökkel számolhatunk a nullától az egyikből?

    Miért valóban? Amint a gyakorlat is széles körben elterjedt, gyakorlati okai vannak annak végrehajtására.

    A válasz

    A SuperUser Matteo közreműködője a következő betekintést nyújtja:

    A 0-ból származó számlálási tömbök egyszerűsítik az egyes elemek memóriacímének számítását.

    Ha egy tömböt egy adott helyen tárolnak a memóriában (a címnek nevezik), akkor az egyes elemek helyzete számítható

    elem (n) = cím + n * méret_nagy 

    Ha az első elemet az első, akkor a számítás lesz

    elem (n) = cím + (n-1) * méret_nagy_elem 

    Nem nagy különbség, de minden hozzáférésre szükségtelen kivonást ad.

    Szerkesztés:

    • A tömbindex használata eltolásként nem követelmény, hanem csak szokás. Az első elem eltolását a rendszer elrejtheti és figyelembe veheti az elem elosztásakor és hivatkozáskor.
    • Dijkstra megjelent egy „Miért számozásnak kell kezdeni a nulláról” című dokumentumot (pdf), ahol elmagyarázza, miért jobb a 0-val való indítás. A nulláról való indítás lehetővé teszi a tartományok jobb megjelenítését.

    Ha mélyebbre kívánja érezni a választ, a Dijkstra papír informatív olvasmány.


    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.