Perché i computer contano da zero?

Sommario:

Perché i computer contano da zero?
Perché i computer contano da zero?

Video: Perché i computer contano da zero?

Video: Perché i computer contano da zero?
Video: How to Import vCard Files in Gmail® - YouTube 2024, Maggio
Anonim
 Il conteggio da zero è una pratica molto comune in molti linguaggi informatici, ma perché? Continuate a leggere mentre esploriamo il fenomeno e perché è così diffuso.
Il conteggio da zero è una pratica molto comune in molti linguaggi informatici, ma perché? Continuate 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 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:

Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.

What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?

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

La risposta

Il collaboratore di SuperUser Matteo offre le seguenti informazioni:

Counting arrays from 0 simplifies the computation of the memory address of each element.

If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as

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.

Consigliato: