10進数から2進数への変換【整数】
今回は10進数から2進数への変換方法について解説します。ITパスポート、基本情報技術者試験では必須の知識になってくるのでぜひ最後まで読んでみてください。
10進数は私たちが日常的に使っている数字の表し方をイメージしてください。0,1,2,3,4,5,6,7,8,9の10種類の数字を用いて表しているので10進数と呼びます。
では2進数とは何でしょうか。10進数が10種類の数字を使って表すので、2進数は2種類、つまり0と1を使って数字を表します。
0→1の次は10進数では2になりますが、2進数では繰り上げて10と表します。そして、3は2進数では11になります。4になるとまた繰り上げて100と表します。
基本情報技術者試験の過去問でも10進数表記のものは(10)、2進数であれば(2)と区別して表現されます。例えば111(10)は10進数の111で、111(2)は2進数の111を表すことになります。
ではこの2進数の表し方どのように考えたら良いかですが、10進数で10,100,1000がキリの良い数字であるように2進数にもキリの良い数字が存在します。以下の表を見てください。
10進数 | 2進数 |
2 | 10 |
4 | 100 |
8 | 1000 |
16 | 10000 |
32 | 100000 |
64 | 1000000 |
2進数でキリの良い数字は10進数での2の累乗になっているのに気づくでしょうか。また10進数の2の累乗の指数部分の数字だけ2進数では0がつきます(例えば16であれば2の4乗なので、2進数では0が4つ)。そこで10進数を2進数に直す時はこのキリの良い2進数(つまり10進数での2の累乗)に注目して考えます。
では少し練習してみましょう。
問1、19(10)を2進数で表すとどうなりますか?
まず19を2の累乗を使って表しましょう。21=2、22=4、23=8、24=16、25=32と考えていくと24=16になり、19-16で残りが3ですね。その3は21+1と表せます。
つまり19=24+21+1となります。
次に、先ほどの表を見ると24=16は10000で21=2は10になるので、それらを足し合わせると10000+10+1となり10011になります。
問2、531(10)を2進数で表すとどうなりますか?
2の累乗を順番に考えていくと531は29=512と210=1024の間にあります。そして、残り531-512=19を考えます。これは問1でもやった通りで、19=24+21+1となります。
つまり531=29+24+21+1となります。
累乗の数だけ2進数では0がつくので、29は1000000000、24は10000、21は10となり、答えは1000010011となります。
10進数から2進数への変換【小数】
次に小数の場合はどうなるのか見ていきます。
以下が10進数と2進数の対応表です。整数の時には21、22、23、24、25、26といった2の累乗が2進数でのキリの良い数字とお伝えしました。小数の時も2の累乗がキリの良い数字になり、以下のように2-1、2-2、2-3、2-4、2-5、2-6がキリの良い数字になります。
10進数 | 2進数 |
2-1 | 0.1 |
2-2 | 0.01 |
2-3 | 0.001 |
2-4 | 0.0001 |
2-5 | 0.00001 |
2-6 | 0.000001 |
-1乗や-2乗といった指数部分にマイナスがつく時の計算方法は1/21、1/22となります。つまり10進数の1/2=0.5は2進数の0.1、10進数の1/4=0.25は2進数の0.01となります。
また、10進数の時同様に指数部分の数字が0の数と一致していることに気づいたでしょうか。
これらを組み合わせて10進数の小数を2進数に直してみましょう。
例えば0.75(10)を2進数に直すにはどうしたら良いでしょうか。
0.75=0.5+0.25=2-1+2-2となります。つまり2進数に直すと0.11になります。
では次に0.625(10)を2進数に直してみましょう。
0.625=0.5+0.125=2-1+2-3となります。つまり2進数に直すと0.101になります。
ちなみに10進数の自然数であればすべて2進数で表すことができますが、小数の場合は2進数で表せる有限小数と、2進数で表せない無限小数になるものもあります。10進数でも小数で表せない無限小数があるのと同じだと思ってください(例えば1/3は0.33333333・・・)。
では最後に整数部分と小数部分が合わさった問題を解いてみましょう。
23.9375(10)を2進数に直してください。
まず整数部分から直していきます。
23=24+22+21+1になるので、10111になります。
次に小数部分の0.9375はまず分数に直してみてください。9375/10000になり、5で割って約分していくと9375/10000=1875/2000=375/400=75/80=15/16となります。
この時の分母が2の累乗の形になっていれば有限小数で表すことができます。実際に15/16を分母が2の分数の足し算で表してみます。
やり方は、上の表の分数を引き算していくのがやりやすいと思います。
15/16-1/2=7/16
7/16-1/4=3/16
3/16-1/8=1/16
1/16-1/16=0
つまり15/16=1/2+1/4+1/8+1/16となり、2進数では0.1111となります。
よって、整数部分と合わせると10111.1111が答えです。
ご覧いただきありがとうございました。次回は浮動小数点数について解説したいと思います。
ちなみに基本情報技術者試験はCBT方式で受験可能です。詳しくは下記の公式ホームページをご覧ください。