プログラミング言語での0ベースの番号付けの主な利点は、ポインター算術を介してメモリ位置にインデックスを転送する計算の複雑さの削減です。開始インデックスが1の場合、これは常に取得される要素のインデックスから差し引く必要があります。メモリロケーション$ i^{th} $ $ l_i $の$ l $から始まる配列の要素は、$ l_i = l +（i -b）*s $です。ここで、$ b $は開始 /開始インデックスですアレイと$ s $のサイズの1つの要素。$ b = 0 $を設定するだけで、この1つの減算が保存されます。

それにもかかわらず、人間は通常1ドルでカウントを開始するため、この種のインデックス作成は、コーディングに慣れていない人間にとって直感に反するものです。これが、通常、インデックスを1ドルで開始するプログラミング言語の一部であるか、$ 0 $と$ 1の$ベースのインデックスの両方を許可する理由です。
The main advantage of 0-based numbering in programming languages is the reduced computational complexity transferring indices to memory locations via pointer arithmetic. If the starting index was 1, this would always have to be subtracted from the index of the element that is retrieved. The memory location $l_i$ of the $i^{th}$ element of an array starting at $l$ is: $l_i = l + (i - b)*s$, where $b$ is the beginning / starting index of the array and $s$ the size of one element. Simply setting $b=0$ saves this one subtraction.

Nevertheless, humans usually start counting at $1$, so this kind of indexing is counter-intuitive for humans not familiar with coding. This is why some programming languages usually starting their indexing at $1$ or allow both $0$ and $1$-based indexing.