Udemyでもプログラミングを教えていますUdemy

プログラミングのための2進法、10進法への変換

  • URLをコピーしました!
目次

なぜパソコンでは2進法を使うのか

2進法について解説します。 皆さんは日常的に0から9までの10種類の数字によって数を表す10進法を使っていますが、 コピュータの内部では012種類の数字だけで数を表す2進法を使って計算が行われます。

動画でも解説しています。ご視聴いただいた後、本記事をお読みいただくと、より理解は深まります。

https://www.youtube.com/watch?v=2rMc-1AMlS0

 10進法では 10 になると繰り上がりが発生する一方、 2進法では「2」になると繰り上がりが発生します。 たとえば、

  • 10001」に1を足すと「10010 (1 [けた] について繰り上がり)
  • 10101 1を足すと 10110 (1桁について繰り上がり)
  • 10111 1を足すと「11000 (3桁について繰り上がり)
  • 11111」に1を足すと 100000 (5桁について繰り上がり)

となります。

これは10進法における以下の足し算と同じようなものです。 2進法で右から1が連続している部分を、 全部9に置き換えると分かりやすいと思います。

  • 10009 1を足すと「10010
  • 10109」に1を足すと「10110
  • 10999 1を足すと「11000
  • 99999」に1を足すと 100000

 

この規則に従って、0から20までの数を数えてみると、次の表の通りになります。

 

次に、 2進法を10進法に変換するにはどうすれば良いのでしょうか。 ゼロから1つずつ数を足していくと時間がかかってしまいますが、実は位の性質を使うと、 効率的に変換することができます。

10進法の仕組み

314の場合

ここで10進法の仕組みから解説しましょう。 10進法では下から順に一の位、十の位、 百の位、千の位、といったように桁に位が付けられ、 「位とその桁の数の掛け算」 の合計が元々の整数になります。

下図は3142037の場合の例を示しています。

 

2進法→10進法の変換 

2進法も同じような仕組みで動いています。 1を倍々していくと1→2→4→8→となるので、 1の位、2の位、4位、8の位、といったように桁に位を付けることを考えましょう。このとき、 「位とその桁の「数の掛け算」 の合計が2進法を10進法に変換した値になります。 たとえば101110進法に変換した値は111110010進法に変換した値は28です。

3 進法などについて 

3進法は0,1,2の組み合わせで数を表現する方法であり、 3 になると繰り上がりが発生します。

そこで、13を掛け続けると1→3→9→27→81 → ・・・ となるので、1の位、3の位、9の位、27の位といった規則で桁に位を付けることを考えましょう。 このとき、 「位とその桁の数の掛け算」 の合計が3進法を10進法に変換した値になります。

たとえば3進法の121210進法に変換した値は50です。 また、3進法で abc」と書かれる数を10進法に変換した値は9a3b+cです。

4進法から10進法への変換

 4進法は 0,1,2,3の組み合わせで数を表現する方法であり、「4」になると繰り上がりが発生します。 

そこで、14を掛け続けると1→4→16→64→256→となるので、1の位、4の位、16の位、64の位といった規則で桁に位を付けることを考えましょう。このとき 「位とその桁の数の掛け算」の合計が4進法を10進法に変換した値になります。

たとえば4進法の223110進法に変換した値は173です。 5進法、6進法なども同様に定義され、同じような方法で10進法に変換することができます。

10進法から2進法などへの変換

下図のように「数がゼロになるまで2で割った余りを書いていき、それを下から読む」ことで10進法を2進法に変換することができます。

10進法を2進法以外に変換するときも同じような方法が使えます。 たとえば3進法の場合、 数がゼロになるまで3で割った余りを書いていき、それを下から読めば良いです。 下図右側の例のように、10進法を同じ10進法に変換する場合でも上手くいきます。

少し難しいですが、 この方法で上手くいく理由は、 2進法の未計算部分に着目すると理解しやすいです。 

上図の左側の例について順を追って説明すると、以下のようになります。

  1. 最初に1125余り1と計算しており、 112進法で表記した値 1011 の上3桁が、52進法で表記した値 101 と一致する
  2. 次に5÷22余り1と計算しており、 112進法で表記した値 1011 の上2桁が、 22進法で表記した値 10 と一致する
  3. 次に2÷21余り0と計算しており、 112進法で表記した値 1011 の上1桁が、 12進法で表記した値 1 と一致する
  4. 最後に、10進整数Nを入力し、2進整数に変換した値を出力するプログラムの例として、 コード4が考えられます。 ここでN% 2N / 2などの 2 の値をすべて「3 に変えたうえで適切に場合分けを行う

以上の手順で3進整数に変換することもできます。 4進法などその他の場合も同様です。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次