本誌の第136号で述べたように、コンピュータはデジタル(※1)の数値を処理しますが、一般的には2進数が使われています。2進数は「1」と「0」のみで表現される数値で、例えば、表4のように、10進数の(8)10(はち)は2進数の(1000)2(いちぜろぜろぜろ※2)で表わされます。
10進数 | 16進数 | 2進数 |
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 10 |
3 | 3 | 11 |
4 | 4 | 100 |
5 | 5 | 101 |
6 | 6 | 110 |
7 | 7 | 111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | a | 1010 |
… | … | … |
253 | fd | 11111101 |
254 | fe | 11111110 |
255 | ff | 11111111 |
コンピュータ内部では、予め記憶したプログラムに従い、2進数の様々な演算や処理を行います。
以下はコンピュータ内部で行われる2進数の足し算についてのお話しです。
計算のポイントは、10進数では(9)10の次は桁が一つあがり(10)10になるように、2進数は(1)2の次で1つ桁をあげて、(10)2になることです。
例えば、(100)2と(101)2を足す演算を図6の筆算で考えます。まず、1桁目から足していきます。1桁目は(0)2+(1)2=(1)2となり、桁あがりはありません。次に、2桁目は(0)2+(0)2=(0)2となり、桁あがりはありません。次に3桁目の(1)2+(1)2は、1つ桁をあげる必要があります。すなわち、(1)2+(1)2=(10)2となります。
従って、答えは
(100)2+(101)2=(1001)2となります。
図6 二進数の足し算 |
この計算を10進数で検算すると、(100)2と(101)2は表4より、それぞれ10進数の4と5ですから、4+5=9となります。10進数の9は表4から(1001)2となりますので、2進数での計算と合致しました。
関数電卓をお持ちの場合は、2進数のモードにして、上記の計算の他、いろいろ計算を試してみるのも面白いかと思います。
※1 デジタルは飛び飛びの値(整数等)で表現することを意味します。
※2 間違いを防ぐため、n進数の表記を( )nのように記述する場合がある。これ以外にも表記方法があり、プログラミング言語によっても違いがある。