Por que os computadores contam a partir do zero?

Índice:

Por que os computadores contam a partir do zero?
Por que os computadores contam a partir do zero?

Vídeo: Por que os computadores contam a partir do zero?

Vídeo: Por que os computadores contam a partir do zero?
Vídeo: Como salvar todos os contatos do Outlook como vCard (arquivo vcf) - YouTube 2024, Maio
Anonim
 Contar a partir do zero é uma prática muito comum em muitas linguagens de computador, mas por quê? Continue lendo enquanto exploramos o fenômeno e por que ele é tão difundido.
Contar a partir do zero é uma prática muito comum em muitas linguagens de computador, mas por quê? Continue lendo enquanto exploramos o fenômeno e por que ele é tão difundido.

A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser, uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.

A questão

Leitor de superusuário O DragonLord está curioso sobre o motivo pelo qual a maioria dos sistemas operacionais e linguagens de programação contam a partir de zero. Ele escreve:

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?

Por que de fato? Por mais difundida que seja a prática, certamente existem razões práticas para sua implementação.

A resposta

O colaborador do SuperUser, Matteo, oferece os seguintes insights:

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 você considerar o primeiro elemento o primeiro, o cálculo se torna

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

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

Editado para adicionar:

  • O uso do índice da 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 no zero” (pdf), onde ele explica por que começar com 0 é uma escolha melhor. Começar no zero permite uma melhor representação dos intervalos.

Se você está procurando aprofundar a resposta, o artigo de Dijkstra é uma leitura informativa.

Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.

Recomendado: