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

スポンサーリンク
IT系

はじめに

前回は、コンピュータがなぜ2進数を使うのか、そしてビットとバイトの基礎について解説した。今回は、実際に試験で問われる「10進数から2進数への変換」「2進数から10進数への変換」を、具体例を交えながら見ていく。手を動かして計算する練習が理解への近道であるため、ぜひ自分でも計算しながら読み進めてほしい。

2進数から10進数への変換

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

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

例:01110101 を10進数に変換する

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

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

1が立っている桁は、左から2番目(64)、3番目(32)、4番目(16)、6番目(4)、8番目(1)である。

64 + 32 + 16 + 4 + 1 = 117

したがって 01110101 は10進数の 117 に対応する。

10進数から2進数への変換

10進数から2進数への変換は、「2で割り続けて余りを記録する」方法が基本である。

例:117 を2進数に変換する

117 ÷ 2 = 58 余り 1
 58 ÷ 2 = 29 余り 0
 29 ÷ 2 = 14 余り 1
 14 ÷ 2 =  7 余り 0
  7 ÷ 2 =  3 余り 1
  3 ÷ 2 =  1 余り 1
  1 ÷ 2 =  0 余り 1

余りを下から上に読み上げると 1110101 となり、8ビットで表すと先頭に0を補って 01110101 となる。先ほどの例と一致することが確認できる。

もう一つ別の慣れ方として、重み表(128, 64, 32, 16, 8, 4, 2, 1)を使って大きい方から引いていく方法もある。

例:200 を2進数に変換する(重み表を使う方法)

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

結果は 11001000 となり、200 = 128 + 64 + 8 の計算からも確認できる。
どちらの方法も試験本番で使えるようにしておくと安心である。

練習問題

理解を定着させるため、以下の問題を自分で計算してみてほしい(解答は次回の記事で解説する)。

  1. 10110010 を10進数に変換してください。
  2. 01011011 を10進数に変換してください。
  3. 150 を2進数に変換してください。
  4. 89 を2進数に変換してください。

変換のコツ

  • 8ビット単位で考える癖をつける
    試験問題は8ビット(1バイト)で出題されることが多いため、常に8桁で書く習慣をつけておくと桁の見落としを防げる。
  • 重み表を覚える
    128, 64, 32, 16, 8, 4, 2, 1 という数列は、暗記しておくと変換速度が大きく向上する。
  • 検算の習慣をつける
    進数→10進数→2進数と往復して、元の値に戻るか確認することでケアレスミスを減らせる。

まとめ

  • 2進数から10進数への変換は、1が立っている桁の重み(128, 64, 32…)を足し合わせることで求められる。
  • 10進数から2進数への変換は、「2で割って余りを記録する方法」または「重み表から大きい順に引いていく方法」のいずれかで求められる。
  • 8ビット単位で考える習慣と、重み表の暗記が変換スピードを上げる鍵となる。

次回は、2進数の足し算・引き算といった基本的な演算について、繰り上がり・繰り下がりの仕組みとあわせて解説していこう。

コメント

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