離散数学 03:基数変換を手で解く
基数変換は、情報処理技術者試験の定番です。ポイントは、10進数から変換する場合と、2進数を 8進数・16進数に変換する場合で手順を分けることです。
10進数から n進数へ
整数部分は、変換したい基数で割り続け、余りを下から上へ読みます。
例: 45(10) を2進数にする。
- 45 ÷ 2 = 22 余り 1
- 22 ÷ 2 = 11 余り 0
- 11 ÷ 2 = 5 余り 1
- 5 ÷ 2 = 2 余り 1
- 2 ÷ 2 = 1 余り 0
- 1 ÷ 2 = 0 余り 1
余りを下から読むので、45(10) = 101101(2) です。
2進数から 8進数・16進数へ
2進数を 8進数にするなら右から3ビットずつ、16進数にするなら右から4ビットずつ区切ります。
例: 101101(2) を16進数にする。
右から4ビットで区切ると 10 1101 です。左側は 0010 と補ってよいので、0010 1101 になります。0010 は 2、1101 は D なので、2D(16) です。
小数部分の変換
10進小数を2進小数にする場合は、小数部分に2を掛け続け、整数部分を上から読みます。例えば 0.625 は、0.625×2=1.25、0.25×2=0.5、0.5×2=1.0 なので、0.101(2) です。
試験での見方
整数だけなら割り算の余り、小数なら掛け算の整数部、2進数と16進数なら4ビット単位です。問題ごとに最短の道を選ぶと、計算ミスが減ります。
確認問題
11110000(2) は16進数でいくつでしょうか。
1111 0000 と区切るので、F0(16) です。