以下の3パターンを押さえておく
- n進数→10進数の変換
- 10進数→n進数の変換
- 2進数↔8/16進数の変換
1. n進数→10進数への変換
各桁の位取り(重み)と各桁の数字を掛け算して合計する
位取りの考え方:右から0番目、1番目、2番目…として、基数のn乗が重みになる
例:1011(2)を10進数に
1 0 1 1
↓ ↓ ↓ ↓
2³ 2² 2¹ 2⁰
8 4 2 1
↓ ↓ ↓ ↓
1×8 + 0×4 + 1×2 + 1×1 = 11(10)例:3A.C(16)を10進数に
3 A . C
↓ ↓ ↓
16¹ 16⁰ 16⁻¹
16 1 1/16
↓ ↓ ↓
3×16 + 10×1 + 12×(1/16)
= 48 + 10 + 0.75 = 58.75(10)2. 10進数→n進数への変換
整数部の変換
n で割り算を繰り返し、余りを下から上へ並べる
例:23(10)を2進数に
23 ÷ 2 = 11 余り 1 ←最下位ビット(LSB)
11 ÷ 2 = 5 余り 1
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1 ←最上位ビット(MSB)
答え:10111(2)小数部の変換
n を掛け算を繰り返し、整数部を上から下へ並べる
例:0.625(10)を2進数に
0.625 × 2 = 1.25 → 整数部 1 ←最上位
0.25 × 2 = 0.5 → 整数部 0
0.5 × 2 = 1.0 → 整数部 1 ←最下位
(小数部が0になったら終了)
答え:0.101(2)例:0.3(10)を2進数に(循環小数になる場合)
0.3 × 2 = 0.6 → 0
0.6 × 2 = 1.2 → 1
0.2 × 2 = 0.4 → 0
0.4 × 2 = 0.8 → 0
0.8 × 2 = 1.6 → 1
0.6 × 2 = 1.2 → 1 ←ループ開始
...
答え:0.010011001100...(2) = 0.0(1001)...(2)
※適当な桁数で打ち切る3. 2進数↔8/16進数の変換
2進数→8進数:3桁区切り
2進数→16進数:4桁区切り
各ブロックを変換先の進数で読む(桁が足りない場合は左に0を補う)
例1:2進数 1101101.001101 を16進数に
0110 1101 . 0011 0100
8421 8421 8421 8421
0420 8401 0021 0400
6 D . 3 4
答え:6D.34(16)例2:2進数 111010110.101 を8進数に
111 010 110 . 101
421 421 421 421
421 020 420 401
7 2 6 . 5
答え:726.5(8)例3:16進数 D4.C を2進数に
D → 13(10) → 1101(2)
4 → 4(10) → 0100(2)
C → 12(10) → 1100(2)
答え:11010100.1100(2)例4:8進数 73.4 を2進数に
7 → 111(2)
3 → 011(2)
4 → 100(2)
答え:111011.100(2)