基本情報処理技術者試験に合格しよう

Webデザインの勉強の傍ら独習で基本情報技術者試験合格を目指す

基数変換

情報処理技術者試験には、基数変換の問題がよく出題されます。ここでは以下の基本的な4つの基数変換について解説します。

  • n進数から10進数
  • 10進数からn進数
  • 2進数から8進数
  • 2進数から16進数

n進数から10進数への基数変換

2進数「110.011」を10進数へ基数変換してみます。 変換方法は2進数の値の各桁に2進数の重みを掛けて最後に足します。

2進数 1 1 0 . 0 1 1
重み 2^2 2^1 2^0 . 2^-0 2^-1 2^-2
掛ける 4 2 0 . 0 0.25 0.125

最後に全てを足します「4+2+0+0+0.25+0.125」 となり、2進数「110.011」は10進数では「6.375」となります。

他の進数から10進数への基数変換も同様に計算できます。

n進数から10進数への基数変換は各桁にn進数の重みを掛けて足す

10進数からn進数への基数変換

先ほどとは逆に10進数「6.375」を2進数へ基数変換します。 最初に整数部分と小数部分に分けて考えます。

整数部分

「6.375」整数部分は「6」です。2進数の場合、この値を2で割り余りを下から順に並べていきます。

 基数 余り
6 ÷ 2 3 0
3 ÷ 2 1 1
1 ÷ 2 0 1

これを下から順に並べると、2進数の整数部分は「110」になります。

2回目以降の計算は商を引き継いでいき商が0になったら終了とする

小数部分

「6.375」の少数部分は「0.375」です。2進数の場合、この値を2で掛けて整数部分を上から順に並べていきます。

 基数 積(整数部分)積(少数部分)
0.375 × 2 0 .75
0.75 × 2 1 .5
0.5 × 2 1 .0

この積の整数部分を上から順に並べると、「011」となりこの値が2進数の少数部分になります。 最後に整数部分の結果と小数部分の結果を足した値「110+0.011=110.011」が10進数「6.375」を2進数へ基数変換した値となります。

10進数からn進数への基数変換は整数部分をnで割り余りを下から並べる
               少数部分をnで掛け整数部分を上から並べる

2進数から8進数

「2^3=8」から2進数の3桁は8進数の1桁に対応しています。2進数の値を8進数で表すには小数点を基準に3桁ずつ区切り3桁に足らない部分は0で補い重みを掛けそれぞれを足して表します。 2進数「1011.01」を8進数に基数変換してみます。

2進数     1 0 1 1 . 0 1  
0を補う 0 0 1 0 1 1 . 0 1 0
3桁区切り重み 4 | 2 | 1 4 | 2 | 1 . 4 | 2 | 1
掛ける 0 | 0 | 1 0 | 2 | 1 . 0 | 2 | 0

最後に3桁区切りの中の値を足します「(0+0+1=1)、(0+2+1=3)、(0+2+0=2)」。 各区切りがそのまま位になるので2進数「1011.01」は8進数では「13.2」となります。

2進数から16進数

「2^4=16」から2進数の4桁は16進数の1桁に対応しています。先ほどの2進数から8進数同様の考え方を4桁に変えることで表すことが出来ます。 2進数「1011.01」を16進数に基数変換してみます。

2進数 1 0 1 1 . 0 1    
0を補う 1 0 1 1 . 0 1 0 0
4桁区切り重み 8 | 4 | 2 | 1 . 8 | 4 | 2 | 1
掛ける 8 | 0 | 2 | 1 . 0 | 4 | 0 | 0

4桁区切りの中の値を足します「(8+0+2+1=11)、(0+4+0+0=4)」となり、2進数「1011.01」は16進数では「B.4」となります。

16進数では「10=A,11=B,12=C,13=D,14=E,15=F」となる点に注意が必要です