17Aug
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.
Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.
Întrebarea
cititorul SuperUser DragonLord este curios de ce majoritatea sistemelor de operare și limbaj de programare se numără de la zero. El scrie: Calculatoarele
cuprind în mod tradițional valori numerice începând de la zero. De exemplu, matricele din limbile de programare bazate pe C încep de la index zero.
Ce motive istorice există pentru acest lucru și ce avantaje practice numără de la zero au depășit numărul de la unul?
De ce? La fel de răspândită ca și practica, există cu siguranță motive practice pentru punerea ei în aplicare.
Contribuabilul
pentru SuperUser Matteo oferă următoarele informații:
Matricele de numărare 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 * size_of_the_elementDacă considerați primul element primul, calcululdevine elementul
( n) = adresa +( n-1) * size_of_the_elementNu este o diferență uriașă, ci adaugă o scădere inutilă pentru fiecare acces.
Editat pentru a adăuga:
- Utilizarea indexului matricei ca offset 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ă sunteți în căutarea de a aprofunda mai mult în răspuns, hârtia 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.