基数変換は簡単に言うとn進数からm進数に変換することです。
ここは実際に例を見ながら計算してみます。
N進数から10進数への基数変換
2進数で11011という数値が10進数だといくつになるか計算してみます。
各桁の重み 128 64 32 16 8 4 2 1
2進数 0 0 0 1 1 0 1 1
11011という2進数があったとすると
16+8+2+1=27
となります。
10進数からN進数への基数変換(重みを使う)
例えば199という10進数を2進数に直すとします。
199から各桁の重みを引いていきます
各桁の重み 128 64 32 16 8 4 2 1
2進数 1 1 0 0 0 1 1 1
197-128=71 引けたから1
71-64=7 引けたから1
7-32 引けないから0
7-16 引けないから0
7-8 引けないから0
7-4=3 引けたから1
3-2=1 引けたから1
1-1=0 引けたから1
で11000111です。
10進数からn進数への基数変換(わり算とかけ算を使う方法)
「整数部はわり算」で「小数部はかけ算」を行うやり方もあるようです。
13.375という10進数を例にすると
整数部
2|13
2| 6 ... 1
2| 3 ... 0
2| 1 ... 1
---
0 ... 1 あまりの部分を下から上に数えます
小数部
2 * 0.375 = 0.75 *.**の整数の部分を上から下に数えます
2 * 0.75 = 1.5
2 * 0.5 = 1.0
1101.011
整数部の余りの数と小数部の整数部を組み合わせて上記の結果となりました。
2進数から8進数・16進数の基数変換
8進数は2の3乗で16進数は2の4乗です。
2の3乗とは1×2×4が2の3乗ですね。
例えば1101.01という2進数を8進数に直した場合は
001 101 . 010
421 421 . 421
-------------
001 401 . 011
// 3つに分割してその中で足し算する
1と5と2で15.2となります。
2の4乗とは1×2×4×8が2の4乗ですね。
1101.01という2進数を16進数に直した場合は
1101 . 0100
8421 . 8421
-----------
8401 . 0400
// 4つに分割してその中で足し算する
16進数は図で表さないと忘れてしまうので図で見てみます。
十進法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十六進法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
13.4ですが13はDなのでD.4で表します。
16進数は9の次にA~Fですね。
8進数・16進数から2進数への基数変換
先ほど記述したことと逆を行うとできます。
15.2という8進数を2進数に戻す場合は
421 421 . 421
001 101 . 010
2進数だと1101.01
D.4という16進数を2進数に戻す場合は
8421 . 8421
1101 . 0100
2進数だと1101.01
となります。
まとめ
進数の計算は色んな方法があるようなので自分にあった計算方法でやることが重要ですね。