基本情報技術者試験対策(3)2進数を学ぼう(3)

スポンサーリンク
IT系

はじめに

前回は10進数⇔2進数の変換方法を具体例とともに解説した。今回はまず前回の練習問題の解答を確認し、そのあとで2進数の足し算・引き算について、繰り上がり・繰り下がりの仕組みとあわせて解説していく。

前回の練習問題の解答

2進数から10進数への変換は、各桁に「2の何乗」という重みが割り当てられていることを利用する。8ビットの場合、右から順に次のような重みになる。

桁位置2^72^62^52^42^32^22^12^0
重み1286432168421

各桁が1になっている位置の重みを足し合わせれば、10進数に変換できる。

問1:10110010 を10進数に変換してください。

1が立っている桁は128, 32, 16, 2である。

128 + 32 + 16 + 2 = 178

答え:178

Windows11の電卓で検算できる。DEC=10進数

問2:01011011 を10進数に変換してください。

1が立っている桁は64, 16, 8, 2, 1である。

64 + 16 + 8 + 2 + 1 = 91

答え:91

問3:150 を2進数に変換してください。

150 - 128 = 22  → 128の桁は1
 22 -  64 : 引けない →  64の桁は0
 22 -  32 : 引けない →  32の桁は0
 22 -  16 =  6  →  16の桁は1
  6 -   8 : 引けない →   8の桁は0
  6 -   4 =  2  →   4の桁は1
  2 -   2 =  0  →   2の桁は1
  0 -   1 : 引けない →   1の桁は0

答え:10010110

問4:89 を2進数に変換してください。

89 - 64 = 25  → 64の桁は1
25 - 32 : 引けない → 32の桁は0
25 - 16 =  9  → 16の桁は1
 9 -  8 =  1  →  8の桁は1
 1 -  4 : 引けない →  4の桁は0
 1 -  2 : 引けない →  2の桁は0
 1 -  1 =  0  →  1の桁は1

答え:01011001

いかがであろうか。もし間違えた問題があれば、前回の記事を見直して重み表の使い方を再確認してほしい。

2進数の足し算

2進数の足し算は、10進数の筆算と同じ考え方で計算できる。ただし、2進数では「1 + 1 = 10(繰り上がり)」となる点に注意が必要である。基本のルールは以下の4パターンのみである。

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(0を書いて1繰り上げる)

例:01110101(117)+ 00010110(22)を計算する

  01110101
+ 00010110
----------

右の桁(1の位)から順に計算していく。

1桁目(1)  :1 + 0 = 1
2桁目(2)  :0 + 1 = 1
3桁目(4)  :1 + 1 = 10 → 0を書いて繰り上げ
4桁目(8)  :0 + 0 + 繰り上がり1 = 1
5桁目(16) :1 + 1 = 10 → 0を書いて繰り上げ
6桁目(32) :1 + 0 + 繰り上がり1 = 10 → 0を書いて繰り上げ
7桁目(64) :1 + 0 + 繰り上がり1 = 10 → 0を書いて繰り上げ
8桁目(128):0 + 0 + 繰り上がり1 = 1

結果は 10001011 となる。
10進数で検算すると 117 + 22 = 139 であり、10001011 を10進数に変換すると 128 + 8 + 2 + 1 = 139 となり、一致することが確認できる。このように、繰り上がりが連続する桁は見落としやすいため、1桁ずつ丁寧に検算する習慣をつけておきたい。

2進数の引き算

引き算も基本的な考え方は10進数と同じで、上の桁から借りてくる「繰り下がり」が発生する点がポイントである。

0 - 0 = 0
1 - 0 = 1
1 - 1 = 0
0 - 1 = 1(上の桁から1を借りる、繰り下がり)

例:01110101(117)- 00010110(22)を計算する

  01110101
- 00010110
----------

右の桁(1の位)から順に計算する。

1桁目(1)  :1 - 0 = 1
2桁目(2)  :0 - 1 → 借りてくる。10 - 1 = 1、上の桁から1借りる
3桁目(4)  :1 - 1(借り) - 1 = 借りてくる。10 - 1 - 1 = 0、さらに上から1借りる
4桁目(8)  :0 - 0(借り) - 1 = 借りてくる。10 - 1 = 1、さらに上から1借りる
5桁目(16) :1 - 1(借り) - 1 = 借りてくる。10 - 1 - 1 = 0、さらに上から1借りる
6桁目(32) :1 - 1(借り) - 0 = 0
7桁目(64) :1 - 0(借り) - 0 = 1
8桁目(128):0 - 0 - 0 = 0

結果は 01011111 となる。
10進数で検算すると 117 – 22 = 95 であり、01011111 を10進数に変換すると 64 + 16 + 8 + 4 + 2 + 1 = 95 となり、一致することが確認できる。桁がずれると全く違う答えになってしまうため、慣れるまでは1桁ずつ声に出しながら計算し、必ず自分の手で検算する習慣をつけておきたい。

試験対策としてのポイント

  • 基本情報技術者試験では、2進数の足し算・引き算そのものがそのまま問われることは少ないが、補数計算やシフト演算など、後続の単元の土台になる非常に重要な計算である。
  • 繰り上がり・繰り下がりのルールは4パターンずつしかないため、暗記というより「体で覚える」感覚になるまで繰り返し練習するのが効果的である。
  • 実際の試験では時間制限があるため、暗算だけに頼らず、余白に桁を揃えて筆算する習慣をつけておくと本番でも落ち着いて計算できる。

まとめ

  • 2進数の足し算は「1 + 1 = 10」という繰り上がりのルールさえ押さえれば、10進数の筆算と同じ要領で計算できる。
  • 2進数の引き算は「0 – 1」のときに上の桁から借りてくる繰り下がりが発生する点がポイントである。
  • 足し算・引き算は補数計算などの土台となるため、繰り返し練習して感覚を身につけておくことが重要である。

コメント

タイトルとURLをコピーしました