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」に変換できるのです。
コメント