私たちは普段10進数を使って生活を送っていますが、コンピュータ内部では2進数が使われています。
今回は2進数について見ていきましょう。
2進数
2進数では「0」と「1」の2つの数字を使いすべての数を表現します。
「2」を表すためには桁上りして「10」となります。

8進数や16進数については前回の記事を参考にしてください!
進数変換
それでは2進数から他の進数へ変換する方法についてです。
2進数と10進数
まずは10進数から見ていきましょう。
2進数から10進数
2進数から10進数に変換するには桁の重みに桁数を掛けて、その値を足し算します。
重みって何?となると思うので10進数を使って説明します。
10進数で「\(123\)」という数を分解すると、
「\((1\times100)+(2\times10)+(3\times1)\)」と表すことができます。
このとき、各桁に掛けている数(\(100,10,1\))を重みといいます。
ちなみに、重みの基となる数のことを基数といいます。
今回は10進数を例にしているので基数は「\(10\)」です。
それでは2進数「\(1010.01\)」を10進数へ変換してみます。
2進数なので基数は「\(2\)」です。
重みは小数点から
左へ進むと\(2^0,2^1,2^2,2^3\)…と増え、
右へ進むと\(2^{-1},2^{-2},2^{-3}\)…と減っていきます。

\((1\times2^3)+(0\times2^2)+(1\times2^1)+(0\times2^0)+(0\times\frac{1}{2^1})+(1\times\frac{1}{2^2})\)
\(=8+0+2+0+0+0.25\)
\(=10.25\)
結果は10.25となりました。
10進数から2進数
次に10進数から2進数に変換する方法を説明します。
先ほどの「10.25」を2進数へ戻してみましょう。
整数部分と小数部分を分けて変換します。

まずは整数部分です。
「10」を基数である「2」で割っていき、余りを逆から順に並べます。
次に、小数部分です。今度は割るのではなく、基数を掛けていきます。
「2進数」なので基数は「2」ですね。
小数部分がなくなるまで2を掛けていきましょう。
それぞれを合わせて、結果は「1010.01」となりました。
2進数から8進数
2進数から8進数に変換するには、
小数点を基準として3桁ごとに区切り、それぞれの桁に重みをかけて8進数へ変換します。
ここで、なぜ3桁で区切るのかについて説明します。
2進数では3桁を使って0~7までを表します。8進数では1桁で0~7まで表せます。
つまり、2進数の3桁と8進数の1桁は同じ数値を表すことになります。
よって、3桁ごとに区切って変換すると8進数になるのです。
桁が不足する場合は0を補います。
それでは2進数の「1010.01」を8進数へ変換してみましょう。

3桁で区切る
\(001\)|\(010\)|\(.010\)
整数部分
\(001\):\((0\times2^2)+(0\times2^1)+(1\times2^0)=1\)
\(010\):\((0\times2^2)+(1\times2^1)+(0\times2^0)=2\)
小数部分
\(010\):\((0\times2^2)+(1\times2^1)+(1\times2^0)=2\)
→\(12.2\)
結果は「12.2」となりました。
2進数から16進数
2進数から16進数に変換するには、
小数点を基準として4桁ごとに区切り、それぞれの桁に重みをかけて16進数へ変換します。
なぜ4桁で区切るのかというと、8進数へ変換するときと同様です。
2進数では4桁で0~15まで表すことができ、16進数では1桁で0~15までを表せます。
つまり、2進数の4桁と16進数の1桁が同じ数値を表すことになります。
こちらも、桁が不足する場合は0を補いましょう。
また、10進数でいう「10~15」はアルファベットを用いて「A~F」と対応させます。

それでは2進数の「11010.01」を16進数に変換してみましょう。

4桁で区切る
\(0001\)|\(1010\)|\(.0100\)
整数部分
\(0001\):\((0\times2^3)+(0\times2^2)+(0\times2^1)+(1\times2^0)=1\)
\(1010\):\((1\times2^3)+(0\times2^2)+(1\times2^1)+(0\times2^0)=10=A\)
小数部分
\(0100\):\((0\times2^3)+(1\times2^2)+(0\times2^1)+(0\times2^0)=4\)
→\(1A.4\)
結果は1A.4となりました。
16進数は数字とアルファベットを用いて1桁を表すので少し注意が必要ですね。
コメント