頭の中で知っているのは10桁だけです。0〜9。脳内では、これは確かにコンピューターとは異なる方法でエンコードされます。
コンピューターはビットを使用して数値をエンコードしますが、それは重要ではありません。これは、エンジニアがコードをエンコードするために選択した方法ですが、無視する必要があります。32ビットコンピューターには40億を超える異なる値の一意の表現があり、人間には10の異なる値の一意の表現があると考えることができます。
より多くの数を理解する必要があるときはいつでも、システムを使用します。左端の数字が最も重要です。次の10倍の重要性があります。
同様に、40億の異なる値を区別できるコンピューターは、値のセットの左端の値を、そのセットの次の値の40億倍重要にする必要があります。実際、コンピューターはまったく気にしません。数字に「重要性」を割り当てません。プログラマーはそれを処理する特別なコードを作成する必要があります。
値が一意のシンボルの数(人間の頭の中では9)よりも大きくなるたびに、左側の数字に1を追加します。
3+3=6
この場合、数はまだ単一の「スロット」内に収まります
5+5=10. This situation is called an overflow.
そのため、人間は常に十分な一意のシンボルがないという問題に対処します。これを処理するシステムがコンピューターにない限り、余分な数字があったことを忘れて0を書き込むだけです。幸いなことに、コンピューターにはこの場合に発生する「オーバーフローフラグ」があります。
987+321 is more difficult.
あなたは学校で方法を学んだかもしれません。アルゴリズム。アルゴリズムは非常に簡単です。左端の2つのシンボルを追加することから始めます。
7+1=8, we now have ...8 as the result so far
次に、次のスロットに移動して、同じ追加を実行します。
8+2=10, the overflow flag is raised. We now have ...08, plus overflow.
オーバーフローが発生したため、次の数値に1を追加する必要があります。
9+3=12, and then we add one due to overflow. ...308, and we had another overflow.
追加する数字はもうないので、オーバーフローフラグが発生したため、スロットとinser 1を作成します。
1308
コンピューターはまったく同じように動作しますが、人間のような10個だけではなく、2 ^ 32個またはさらに優れた2 ^ 64個の異なるシンボルがあります。
ハードウェアレベルでは、コンピューターはまったく同じ方法を使用してシングルビットで動作します。幸いなことに、それはプログラマーのために抽象化されています。ビットは2桁のみです。これは、電力線で簡単に表現できるためです。ライトが点灯しているか、消灯しています。
最後に、コンピューターは任意の数字を単純な文字列として表示できます。それがコンピューターの長所です。文字のシーケンスと内部表現を変換するアルゴリズムは非常に複雑です。