そもそも基数変換とは何か?
基数変換について簡単に解説します。
- 10進数と16進数
- なぜ基数変換するのか
- 整数部を基数で除算
順番に見ていきましょう。
①10進数と16進数
②なぜ基数変換するのか
③整数部を基数で除算
10進数から16進数への変換方法
10進数から16進数へ変換する方法を、3パターンの例題を使って解説します。
- 整数を含む場合(178)
- 小数を含む場合(0.703125)
- 両方を含む場合(128.5)
順番に見ていきましょう!
①整数を含む場合(178)
まず10進数を16で除算し、商が0になるまで余りを求めます。
- 178 ÷ 16 = 11 余り 2
- 11 ÷ 16 = 0 余り 11
次に求めた余りを下から順に並べ、16進数に変換します。
- 11,2 → B2
よって10進数の178を16進数に変換すると”B2″になります。
②小数を含む場合(0.703125)
まず10進数を16で乗算し、整数部を取り出します。
次に残った小数部を再度16で乗算し、同じ動作を小数部が0になるまで繰り返します。
- 0.703125 × 16 = 11.25 整数部分11
- 0.25 × 16 = 4.0 整数部4
次に取り出した整数部を上から順に並べて、16進数に変換すれば完了です。
- 0,11,4 → 0.B4
よって10進数の0.703125を16進数に変換すると”0.B4″になります。
③両方を含む場合(128.5)
小数点を境に整数部と小数部で別々に処理します。
まずは①の動作で整数部を16進数に変換します。
- 128 ÷ 16 = 8 余り 0
- 8 ÷ 16 = 余り 8
- 余りを下から並べて変換”8,0 → 80″
次に②の動作で小数部を16進数に変換します。
- 0.5 × 16 = 8.0 整数部8
- 整数部を上から並べると変換”0,8 → 0.8″
整数部と小数部の値を組み合わせて変換完了です。
- 80 + 0.8 → 80.8
よって10進数の”128.5″を16進数に変換すると”80.8″になります。
④負の10進数を変換する場合(-18)
まずは10進数から符号を取った値を8ビットの2進数に変換します。
- 18 ÷ 9 = 9 余り 0
- 9 ÷ 2 = 4 余り 1
- 4 ÷ 2 = 2 余り 0
- 2 ÷ 2 = 1 余り 0
- 1 ÷ 2 = 0 余り 1
- 余りを下から順に並べると”00010010″
次に値を反転して1を加え、2の補数を求めます。
2の補数とは、元の値と合算したときに、桁が繰り上がる数値の中で最小のモノを指します。
- 00010010 → 11101101
- 11101101 + 1 = 11101110
2の補数を4ビットで区切り、それぞれを16進数に変換します。
- 11101110 → 1110 1110
具体的には区切り単位で10進数に変換し、それぞれが16進数のいくつに当たるかを考えます。
- 左側4桁目:1 × 2の3乗 = 8
- 左側3桁目:1 × 2の2乗 = 4
- 左側2桁目:1 × 2の1乗 = 2
- 左側1桁目:0 × 2の0乗 = 0
- 10進数12 → 16進数E
- 右側4桁目:1 × 2の3乗 = 8
- 右側3桁目:1 × 2の2乗 = 4
- 右側2桁目:1 × 2の1乗 = 2
- 右側1桁目:0 × 2の0乗 = 0
- 10進数12 → 16進数E
各区切りの16進数を組み合わせて変換完了です。
- 16進数EとEを連結 → EE
よって10進数の-18を16進数に変換すると”EE”になります。
16進数から10進数への変換方法
逆に16進数から10進数へ変換するには以下のステップを踏みます。
- 16進数の各桁に『桁の重み』を掛ける
- 取り出したすべての値を合算する
- 変換完了
16進数”1010″を例に挙げて変換するなら
- 4桁目:1×16の3乗 = 4096
- 3桁目:0×16の2乗 = 0
- 2桁目:1×16の1乗 = 16
- 1桁目:0×16の0乗 = 0
になるので、これらすべての値を合算し、
- 4096 + 0 + 16 + 0 = 4112
となるので、変換後の値は”4112″となります。
コメント