10進数から2進数への変換(1)

2進数から10進数への変換は比較的理解しやすいと思うのですが、10進数から2進数への変換って「2で割った余りがうんたら…」って感じで分かりにくいですよね。
今回から10進数から2進数への変換について書いていきます。
とりあえず今回は解き方のみを書いていきますので、解ければ良いという人は本記事だけ読んでもらえればと思います。

それでは最初に2進数から10進数への変換から。

2進数→10進数

例題1
2進数1101を10進数に変換せよ。

\(2^3\)の位は1、\(2^2\)の位は1、\(2^1\)の位は0、\(2^0\)の位は1ですので、各桁の数値を足していって、
$$1\times 2^3+1\times 2^2+0\times 2^1+1\times 2^0\\=8+4+0+1=13$$
と計算できます。

例題2
2進数1.101を10進数に変換せよ。

これも各桁を足していって、
$$1\times 2^0+1\times 2^{-1}+0\times 2^{-2}+1\times 2^{-3}\\=1+\frac{1}{2}+0+\frac{1}{8}=\frac{13}{8}=1.625$$

ここまでは問題ないと思います。
それでは本題の10進数から2進数への変換です。

10進数→2進数

例題3
10進数13を2進数に変換せよ。

これは問題集等でも良く見かけますので、解ける人は多いと思います。
$$13\div 2=6\cdots 1\\6\div 2=3\cdots 0\\3\div 2=1\cdots 1\\1\div 2=0\cdots 1$$
余りを下から読んでいって答えは1101

それでは次の例題はどうでしょう。
単に「2で割る」ということしか頭にないと、解くのは難しいかなと思います。

例題4
10進数1.625を2進数に変換せよ。

そのまま割り算するのは難しいので基本的な式に戻って考えてみます。

$$2^0\leq1.625<2^1$$
ですので、
$$1.625=a_0\times 2^0+a_1\times 2^{-1}+a_2\times 2^{-2}+\cdots$$
というような形で表されます。
計算しやすくするために、両辺に2を何回かかけてみましょう。
$$3.25=a_0\times 2^1+a_1\times 2^0+a_2\times 2^{-1}+\cdots\\6.5=a_0\times 2^2+a_1\times 2^1+a_2\times 2^0+\cdots\\13=a_0\times 2^3+a_1\times 2^2+a_2\times 2^1+\cdots$$

ここで13を2進数に直すと1101ですので、上の式は下のように表されます。
$$13=1\times 2^3+1\times 2^2+0\times 2^1+1\times 2^0$$
最初の形に戻すために、両辺を\(2^3\)で割ってみましょう。
$$1.625=1\times 2^0+1\times 2^{-1}+0\times 2^{-2}+1\times 2^{-3}$$
よって、1.625を2進数表記すると1.101となります。

このように、まずは割り算しやすい整数に直してから、2進数に変換し、それを2で割っていけば求まります。
(この解き方だと\(2^n\)倍して整数にならない数値に対応できないのですが、それは別記事で)

とりあえず…

とりあえず、下式のような形が基本になるということを頭に入れておきましょう。
$$a_n\times 2^n+a_{n-1}\times 2^{n-1}+a_{n-2}\times 2^{n-2}\cdots$$
これさえ分かっていれば、若干イレギュラーな問題が出たとしても解ける可能性が上がると思います。

次回はなぜ2で割れば求まるのかといったことについて解説したいと思います。

タイトルとURLをコピーしました