【資格の勉強】2進数の変換

10進数を2進数に基数変換する

わたしたち人間が使う10進数を、コンピューターが使いやすいように2進数に変換する必要がある。10進数の基数は「10」、2進数の基数は「2」なので、この作業を基数変換と呼ぶ。

10進数を2進数に基数変換するには、10進数の値を2で何度も割り算して、商が0になった時点での余りを下から順に並べる、といった作業をする。

例)10進数の12を2進数に変換するには、以下の式となる。

  • 12÷2=6余り0
  • 6÷2=3余り0
  • 3÷2=1余り1
  • 1÷2=0余り1

商が0になるまで計算した余りを下から並べると「1100」となる。つまり10進数「12」は2進数だと「1100」と表現する。

2進数を10進数に基数変換する

逆に、2進数を10進数に基数変換するときは別の計算方法を用いる。

2進数を10進数に基数変換するには、2進数の値の各桁の重みを掛け算して、その全てを足し合わせる。桁の重みとは、2進数の場合、2の累乗となる。つまり1桁目から20、21、22…と続く。

先程の2進数「1100」を10進数に基数変換する計算は下記となる。

  • 0×20=0
  • 0×21=0
  • 1×22=4
  • 1×23=0

これらを足し合わせると「0+0+4+8=12」となる。つまり2進数「1100」=10進数「12」だ。

8進数、16進数とは?

10進数は10で桁上り、2進数は2で桁上りするのと同じように、8進数は8で桁上りし、16進数は16で桁上りする。

10進数、2進数、8進数はすべて数字で表現できるが、16進数だけはアルファベットも使う。10以降2桁になってしまうからA~Fを使う。

  • 10進数:1,2,3,4,5,6,7,8,9
  • 2進数:1,2
  • 8進数:1,2,3,4,5,6,7
  • 16進数:1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)

8進数や16進数が使われ、7進数や13進数などが使われないのには理由がある。8進数と16進数が、2進数と相性がいいからだ。そのため、2進数の代用として8進数、16進数が使われる。

2進数から8進数、16進数への変換

「2進数の3桁=8進数の1桁」だったり、「2進数の4桁=16進数の1桁」だったりする。

例えば、2進数の「111」は8進数の「7」に変換できる。2進数を10進数に変換するときの方法と同じで、各桁の重み×値を全て足し合わせる。

  • 1×20=1
  • 1×21=2
  • 1×22=4

「1+2+4=7」となる。

一方、16進数の場合は、2進数の4桁分と同じになる。つまり2進数「1010」は、16進数「A」となる。

  • 0×20=0
  • 1×21=2
  • 0×22=0
  • 1×23=8

「0+2+0+8=10」となる。16進数では10をAと表現するので「A」だ。

8進数、16進数から2進数への変換

8進数を2進数に変換する方法です。8進数の1桁を、2進数の3桁に変換します。計算で導き出します。8進数「7」を2で割り、余りを下からつなげます。

  • 7÷2=3余り1
  • 3÷2=1余り1
  • 1÷2=0余り1

余りをしたからつなげて「111」。つまり8進数「7」は2進数「111」です。さらに、8進数「71」でも、各桁ごとに同じように計算します。

  • 1÷2=0余り1

「1」と一桁で計算が終わってしまいますが、8進数の1桁は2進数の3桁と同じなので、0で穴埋めをして3桁にします。「001」です。8進数の7が「111」、1が「001」なので、並べて「111001」となります。つまり8進数の「71」は、2進数の「111001」なのです。

一方、16進数から2進数へ変換するときも理屈は同じです。

16進数「2C」を2進数に変換するには、「2」と「C」をそれぞれ4桁の2進数に変換します。

  • 2÷2=1余り0
  • 1÷2=0余り1

「10」で計算は終わりますが4桁の2進数にすると「0010」です。

もう一つの値である「C」は「12」という意味です。

  • 12÷2=6余り0
  • 6÷2=3余り0
  • 3÷2=1余り1
  • 1÷2=0余り1

「1100」です。つなげると、「00101100」となります。つまり、16進数「2C」は、2進数「00101100」に変換できるのです。

コメント