そもそも基数変換とは何か?
基数変換について簡単に解説します。
- 10進数と2進数
- 変換するのはどんな時か
- 整数部を基数で除算
順番に見ていきましょう。
①10進数と2進数
基数変換とは、ある基数で表された数値を別の基数に変換することを指します。最も一般的なのが、2進数と10進数の変換です。10進数は、人間が日常的に使用している数値表現方法で、0から9までの10個の数字を使って数値を表します。一方、2進数は、0と1の2つの数字のみで数値を表現する方法で、コンピュータなどの電子機器で使われています。
②変換するのはどんな時か
人間が入力した命令をコンピュータが扱えるデジタル形式に変換したり、コンピュータでの演算結果を人間が読みやすい形式に変換したりする場合に、基数変換が必要になります。例えば、コンピュータは機械語と呼ばれる2進数の命令しか理解できないため、ソースコードを実行する際にも、コンパイルというプログラムの変換作業が必要になります。
③整数部を基数で除算
基数とは、数値を表現する際に位取りの基準となる数のことです。簡単に言えば、『〇進数』の〇に当たる部分が基数になります。10進数では10倍ごとに桁が上がるため基数は10、2進数では2倍ごとに桁が上がっていくため基数は2です。変換する場合は、整数部を商が0になるまで2(基数)で割っていき、最後に余りを下から順に取り出します。
10進数から2進数への変換方法
10進数から2進数へ変換する方法を、4パターンの例題を使って解説します。
- 整数を含む場合(155)
- 小数を含む場合(0.625)
- 両方を含む場合(11.5)
- 負の10進数を変換する場合(-100)
順番に見ていきましょう!
①整数を含む場合(155)
まず10進数を2で除算し、商が0になるまで余りを求めます。
- 155 ÷ 2 = 77 余り 1
- 77 ÷ 2 = 38 余り 1
- 38 ÷ 2 = 19 余り 0
- 19 ÷ 2 = 9 余り 1
- 9 ÷ 2 = 4 余り 1
- 4 ÷ 2 = 2 余り 0
- 2 ÷ 2 = 1 余り 0
- 1 ÷ 2 = 0 余り 1
次に求めた余りを下から順に並べれば変換完了です。
- 10011011
よって10進数の155を2進数に変換すると”10011011″になります。
②小数を含む場合(0.625)
まず10進数を2で乗算し、整数部を取り出します。
次に残った小数部を再度2で乗算し、同じ動作を小数部が0になるまで繰り返します。
- 0.625 × 2 = 1.25 整数部 1
- 0.25 × 2 = 0.5 整数部 0
- 0.5 × 2 = 1.0 整数部 1
次に取り出した整数部を上から順に並べれば変換完了です。
- 0.101
よって10進数の0.625を2進数に変換すると”0.101″になります。
③両方を含む場合(11.5)
小数点を境に整数部と小数部で別々に処理します。
まずは①の動作で整数部を2進数に変換します。
- 11 ÷ 2 = 5 余り 1
- 5 ÷ 2 = 2 余り 1
- 2 ÷ 2 = 1 余り 0
- 1 ÷ 2 = 0 余り 1
- 余りを下から順に並べると”1011″
次に②の動作で小数部を2進数に変換します。
- 0.5 × 2 = 1.0 整数部 1
- 整数部を上から並べると”0.1″
整数部と小数部の値を組み合わせて変換完了です。
- 1011 + 0.1 = 1011.1
よって10進数の11.5を2進数に変換すると”1011.1″になります。
④負の10進数を変換する場合(-100)
まずは10進数から符号を取った値を2進数に変換します。
- 100 ÷ 2 = 50 余り 0
- 50 ÷ 2 = 25 余り 0
- 25 ÷ 2 = 12 余り 1
- 12 ÷ 2 = 6 余り 0
- 6 ÷ 2 = 3 余り 0
- 3 ÷ 2 = 1 余り 1
- 1 ÷ 2 = 0 余り 1
- 余りを下から順に並べると”1100100″
次に値を反転して1を加え、2の補数を求めます。
2の補数とは、元の値と合算したときに、桁が繰り上がる数値の中で最小のモノを指します。
- 1100100 → 0011011
- 0011011 + 1 = 0011100
よって10進数の-100を2進数に変換すると”0011100″になります。
2進数から10進数への変換方法
逆に2進数から10進数へ変換するには以下のステップを踏みます。
- 2進数の各桁に『桁の重み』を掛ける
- 取り出したすべての値を合算する
- 変換完了
2進数”0111″を例に挙げて変換するなら
- 4桁目:0×2の3乗 = 0
- 3桁目:1×2の2乗 = 4
- 2桁目:1×2の1乗 = 2
- 1桁目:1×2の0乗 = 1
になるので、これらすべての値を合算し、
- 0 + 4 + 2 + 1 = 7
となるので、変換後の値は”7″となります。
コメント