Pagina principala » HOWTO » De ce computerele sunt calculate de la zero?

    De ce computerele sunt calculate de la zero?


    Numărarea de la zero este o practică foarte frecventă în multe limbi de calcul, dar de ce? Citiți mai departe pe măsură ce explorăm fenomenul și de ce este atât de răspândit.

    Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

    Intrebarea

    Cititorul de aplicații DragonLord este curios de ce majoritatea sistemelor de operare și limbaj de programare se numără de la zero. El scrie:

    Calculatoarele clasifică în mod tradițional valori numerice pornind de la zero. De exemplu, matricele din limbile de programare bazate pe C pornesc de la index zero.

    Ce motive istorice există pentru acest lucru și ce avantaje practice numără de la zero au peste numărare de la unul?

    De ce? La fel de răspândită ca și practica, există cu siguranță motive practice pentru punerea în aplicare a acesteia.

    Răspunsul

    Contribuitorul la Super Matrix Matteo oferă următoarele informații:

    Numărarea matricelor de la 0 simplifică calculul adresei de memorie a fiecărui element.

    Dacă o matrice este stocată la o anumită poziție din memorie (se numește adresa), poziția fiecărui element poate fi calculată ca

    element (n) = adresa + n * mărimea elementului 

    Dacă considerați primul element primul, calculul devine

    element (n) = adresa + (n-1) * mărimea elementului 

    Nu este o diferență uriașă, ci adaugă o scădere inutilă pentru fiecare acces.

    Editat pentru a adăuga:

    • Utilizarea indexului matricei ca o compensare nu este o cerință, ci doar un obicei. Deplasarea primului element ar putea fi ascunsă de sistem și luată în considerare la alocarea și referința elementului.
    • Dijkstra a publicat o lucrare "De ce numerotarea ar trebui să înceapă de la zero" (pdf) unde explică de ce începând cu 0 este o alegere mai bună. Pornind de la zero permite o reprezentare mai bună a intervalelor.

    Dacă vreți să vă implicați mai mult în răspuns, documentul Dijkstra este o citire informativă.


    Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.