なぜコンピュータはゼロから数えるのですか?
ゼロから数えることは、多くのコンピュータ言語で非常に一般的な方法ですが、なぜでしょうか。この現象と、なぜそれが広く普及しているのかを探りながら読み進めてください。.
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
質問
SuperUserの読者DragonLordは、ほとんどのオペレーティングシステムとプログラミング言語がゼロから数えられる理由について興味を持っています。彼は書く:
コンピュータは伝統的にゼロから始まる数値を集計します。たとえば、Cベースのプログラミング言語の配列はインデックス0から始まります。.
これにはどのような歴史的な理由がありますか、そしてゼロから数えることが1から数えるよりもどんな実用的な利点がある?
どうしてなの?慣例が広く普及しているように、その実装には実際的な理由があります。.
答え
スーパーユーザー寄稿者Matteoは以下の洞察を提供します:
配列を0から数えると、各要素のメモリアドレスの計算が簡単になります。.
配列がメモリ内の指定された位置(アドレスと呼ばれる)に格納されている場合、各要素の位置は次のように計算できます。
element(n)=アドレス+ n * size_of_the_element
最初の要素を最初と見なすと、計算は次のようになります。
element(n)= address +(n-1)* size_of_the_element
大きな違いはありませんが、アクセスごとに不要な減算が追加されます。.
追加するために編集:
- 配列インデックスをオフセットとして使用することは必須ではなく、習慣にすぎません。最初の要素のオフセットはシステムによって隠され、要素の割り当ておよび参照時に考慮される可能性があります。.
- Dijkstraは論文「なぜ数字はゼロから始めるべきか(pdf)」を発表し、そこではなぜ0から始めるのがより良い選択であるかを説明しています。ゼロから始めると範囲をより良く表すことができます.
あなたが答えをもっと深く掘り下げたいと思っているなら、Dijkstraの論文は有益な読み物です。.
説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.