コンピュータを使って様々な計算を行うときに大事なデータが失われることがないように、コンピュータの世界でデータがどのように扱われているのかを、改めて確認しておきましょう。キーワードは「ビット」と「バイト」です。

 1ビット(bit)はコンピュータが扱う最小単位で、2進数の1桁を表します。ビットが8個集まると1バイト(Byte)です。つまり、1バイトで2進数の8桁を、2バイトでは16桁(=2×8)を扱うことができます。

データの扱い方

 コンピュータは効率良く計算を行うために、決まった大きさの入れ物にデータを入れて読み書きをします。この入れ物の大きさを表す単位が「バイト」です。たとえば、

[画像のクリックで拡大表示]

 を実行すると、コンピュータはaという入れ物(*1)を用意して、そこに「00000110」を代入します。10進数の「6」を2進数で表すと「110」ですが、コンピュータではバイト単位が基本です。1バイトの入れ物であれば左側を0で埋めて、8ビット全体を使います。

1バイトは8ビット
[画像のクリックで拡大表示]

 今、1バイトの入れ物に入っているのが「11111111」と仮定しましょう。ここに「1」を足すと、桁が1つ繰り上がって「100000000」になりますが、入れ物は1バイト(8桁)の大きさしかありません。こういう場合は入りきらなかった値を捨てて、右から8桁だけが有効になります。

オーバーフロー
[画像のクリックで拡大表示]

 この状態を「桁あふれ」または「オーバーフロー」と言います。どんなにコンピュータの計算が正しくても、オーバーフローが発生すると正しい答えは得られないので注意してください。

 オーバーフローが生じるのは、扱うデータに対して入れ物が小さいことが原因です。上の図の場合は、2バイトの入れ物を使うことで、オーバーフローを回避できます。

2バイトは16ビット
[画像のクリックで拡大表示]
*1 説明の都合上、図では入れ物の大きさを1バイトにしていますが、一般的なプログラミング言語は整数を4バイトや8バイトで扱います。