はじめに
前回は、コンピュータがなぜ2進数を使うのか、そしてビットとバイトの基礎について解説した。今回は、実際に試験で問われる「10進数から2進数への変換」「2進数から10進数への変換」を、具体例を交えながら見ていく。手を動かして計算する練習が理解への近道であるため、ぜひ自分でも計算しながら読み進めてほしい。
2進数から10進数への変換
2進数から10進数への変換は、各桁に「2の何乗」という重みが割り当てられていることを利用する。8ビットの場合、右から順に次のような重みになる。
| 桁位置 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
|---|---|---|---|---|---|---|---|---|
| 重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
例:01110101 を10進数に変換する
各桁が1になっている位置の重みを足し合わせれば、10進数に変換できる。
| 桁位置 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
|---|---|---|---|---|---|---|---|---|
| 重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| 2進数 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
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 の計算からも確認できる。
どちらの方法も試験本番で使えるようにしておくと安心である。
練習問題
理解を定着させるため、以下の問題を自分で計算してみてほしい(解答は次回の記事で解説する)。
10110010を10進数に変換してください。01011011を10進数に変換してください。- 150 を2進数に変換してください。
- 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進数の足し算・引き算といった基本的な演算について、繰り上がり・繰り下がりの仕組みとあわせて解説していこう。



コメント