コンピュータでは負の数を表現するために「2の補数」という方法がよく使われます。二進数の110101がなぜ-11になるのか疑問に感じる人は多いですが、2の補数のルールを理解すると計算の仕組みが見えてきます。この記事では、2の補数表現の基本から、110101が負の数としてどのように解釈されるのかを順番に解説します。
2の補数表現とは何か
2の補数表現とは、コンピュータで負の整数を表すために使われる二進数の表現方法です。通常の二進数では、すべてのビットを使って正の数を表しますが、2の補数では一番左のビット(最上位ビット)を符号として利用します。
例えば6ビットの二進数では、左端のビットが0なら正の数、1なら負の数を表します。
つまり、6ビットの場合は次のようになります。
000000〜011111 → 0〜31の正の数
100000〜111111 → -32〜-1の負の数
110101は左端が1なので、負の数であることが分かります。
110101を2の補数から元の絶対値に戻す方法
2の補数で表された負の数の大きさを調べるには、次の手順を行います。
① すべてのビットを反転する
② 反転した値に1を足す
まず、110101を反転します。
110101 → 001010
次に、001010に1を足します。
001010+000001=001011
001011を通常の二進数として十進数に変換すると、
0×32+0×16+1×8+0×4+1×2+1×1=11
となります。
つまり、110101は「-11」を表していることになります。
なぜ反転して1を足すと負の数になるのか
2の補数が使われる理由は、コンピュータ内部で足し算だけを使って正負の計算を処理できるためです。
例えば、6ビットで11を表すと、
001011
になります。この11の2の補数を求めると、
001011を反転 → 110100
1を足す → 110101
となり、-11になります。
この2つを足すと、
001011+110101=1000000
6ビットでは7桁目を無視するため、結果は000000になります。つまり、11+(-11)=0を正しく表現できます。
6ビットの二進数で表せる範囲
2の補数では、nビットの場合に表現できる範囲が決まっています。
6ビットの場合、表せる範囲は次の通りです。
-2⁵〜2⁵-1
つまり、
-32〜31
までの整数を表現できます。
そのため、110101は6ビットの範囲内で負の数として扱われ、-11という値になります。
2の補数表現で注意するポイント
2の補数では、同じ二進数でも何ビットで考えるかによって意味が変わります。
例えば110101を6ビットの2の補数として読むと-11ですが、正の二進数として読む場合は、
32+16+4+1=53
となり、53になります。
つまり、二進数を見るときは「何ビットの符号付き整数として扱っているか」を必ず確認する必要があります。
まとめ
二進数110101が-11になる理由は、6ビットの2の補数表現で左端のビットが1になっているためです。
負の値を求めるには、ビットを反転して1を足します。
110101 → 001010 → 001011 → 11
となるため、110101は-11を表します。
2の補数は、コンピュータが負の数を効率よく扱うための重要な仕組みです。反転して1を足すという手順だけでなく、その理由まで理解すると、情報分野の二進数計算をより深く理解できます。


コメント