17Aug

Por que os computadores contam de zero?


Contagem de zero é uma prática muito comum em muitas linguagens de computador, mas por quê?Leia mais enquanto exploramos o fenômeno e por que está tão difundido.

Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.

A Pergunta

O leitor SuperUser DragonLord tem curiosidade sobre por que a maioria dos sistemas operacionais e linguagens de programação contam de zero. Ele escreve:

Computers tradicionalmente contabiliza valores numéricos a partir de zero. Por exemplo, arrays em linguagens de programação baseadas em C começam a partir do zero índice.

Que razões históricas existem para isso, e quais vantagens práticas contagem de zero têm contagem de uma?

Por que de fato? Tão generalizada quanto a prática é, certamente há razões práticas para sua implementação.

A Resposta O contribuidor

SuperUser Matteo oferece as seguintes informações:

As matrizes de contagem de 0 simplificam a computação do endereço de memória de cada elemento.

Se uma matriz é armazenada em uma determinada posição na memória( é chamado de endereço), a posição de cada elemento pode ser calculada como elemento

( n) = endereço + n * tamanho_do_elemento

Se você considera o primeiro elemento o primeiro, a computaçãotorna-se elemento

( n) = endereço +( n-1) * size_of_the_element

Não é uma grande diferença, mas adiciona uma subtração desnecessária para cada acesso.

Editado para adicionar:

  • O uso do índice de matriz como um deslocamento não é um requisito, mas apenas um hábito. O deslocamento do primeiro elemento pode ser oculto pelo sistema e levado em consideração ao alocar e referenciar o elemento.
  • Dijkstra publicou um artigo "Por que a numeração deve começar em zero"( pdf), onde ele explica por que começar com 0 é uma escolha melhor. Começar em zero permite uma melhor representação de intervalos.

Se você está olhando para aprofundar a resposta, o papel Dijkstra é uma leitura informativa.

Tem alguma coisa a adicionar à explicação? Som na parte dos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.