Homepage » come » Perché i computer contano da zero?

    Perché i computer contano da zero?


    Il conteggio da zero è una pratica molto comune in molti linguaggi informatici, ma perché? Continua a leggere mentre esploriamo il fenomeno e perché è così diffuso.

    La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.

    La domanda

    Lettore SuperUser DragonLord è curioso di sapere perché la maggior parte dei sistemi operativi e dei linguaggi di programmazione conta da zero. Lui scrive:

    I computer calcolano valori numerici tradizionalmente a partire da zero. Ad esempio, gli array nei linguaggi di programmazione basati su C iniziano da zero dell'indice.

    Quali ragioni storiche esistono per questo, e quali vantaggi pratici fa il conteggio da zero a contare da uno?

    Perché davvero? Per quanto diffusa come la pratica, sicuramente ci sono ragioni pratiche per la sua attuazione.

    La risposta

    Il collaboratore di SuperUser Matteo offre le seguenti informazioni:

    Il conteggio degli array da 0 semplifica il calcolo dell'indirizzo di memoria di ciascun elemento.

    Se una matrice è memorizzata in una data posizione in memoria (è chiamata l'indirizzo) la posizione di ogni elemento può essere calcolata come

    element (n) = address + n * size_of_the_element 

    Se consideri il primo elemento il primo, il calcolo diventa

    element (n) = address + (n-1) * size_of_the_element 

    Non un'enorme differenza, ma aggiunge una sottrazione non necessaria per ogni accesso.

    Modificato per aggiungere:

    • L'uso dell'indice dell'array come offset non è un requisito ma solo un'abitudine. L'offset del primo elemento potrebbe essere nascosto dal sistema e preso in considerazione durante l'allocazione e l'elemento di riferimento.
    • Dijkstra ha pubblicato un articolo "Perché la numerazione dovrebbe iniziare da zero" (pdf) dove spiega perché iniziare con 0 è una scelta migliore. L'avvio a zero consente una migliore rappresentazione degli intervalli.

    Se stai cercando di approfondire la risposta, la carta Dijkstra è una lettura informativa.


    Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.