17Aug
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_elementoSe você considera o primeiro elemento o primeiro, a computaçãotorna-se elemento
( n) = endereço +( n-1) * size_of_the_elementNã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.