10進数と2進数の変換のやり方メモ

投稿日:

10進数と2進数の相互変換のやり方のメモ書きです。

もくじ

  • 10進数と2進数とは?
  • 10進数→2進数の変換
  • 2進数→10進数の変換

10進数と2進数とは?

10進数と2進数の変換方法に話に入る前に、10進数と2進数、10進法と2進法の意味について少しだけ解説します(わかってる人は読み飛ばしていいです)。10進法は普段我々が慣れ親しんでいる記数法(数を表現する方法)です。0~9までの10個の数字を用いて数を表します。何か物(例えばミカン)を数えるときにはミカンが(0個、)1個、2個、3個、…、8個、9個というふうに数えていきます。そして、10進法では9の次の数を表す数字が無いので、桁が繰り上がります(10)。そしてまた11個、12個、13個…と数えていくわけです。使える数字の数で収まらなくなったら桁上りで対応します。10進法で表された数が10進数です。

一方、2進法の場合は0と1という2個の数字を使って数を表します。コンピューターではよく出てきます。物を数える場合には(0個、)1個、10個、11個、100個、101個、110個、111個、1000個…といった感じになります。使える数字が0と1の2個だけなので、すぐに桁上りが発生します(なので2進法で数を表すと桁数が嵩みます)。2進法で表された数が2進数です。

最後に「基数」という概念に触れて用語解説を終わりたいと思います。「基数」は数を表現するときに桁の重み付けの基本となる数です。10進法の基数は10になります(n進法の基数はn)。各桁の数値にその桁の重み(桁の重みの意味は後述)を掛けたものを足し合わせることで数ができます。「桁の重み」は基数の累乗で表されます。n進法におけるp桁目(整数部)の桁の重みは「nの(p-1)乗」で表されます。小数部の場合は「nの-p乗」になります(例 8進法における整数部3桁目の桁の重みは 8の(3-1)乗=64 4進法における小数部2桁目の桁の重みは 4の-2乗=0.0625(16分の1))。

整数部(整)p桁目 整3桁目 整2桁目 整1桁目 小数点 小1桁目 小2桁目 小数部(小)p桁目
n進数の桁の重み n^(p-1) n^2 n^1 n^0 . n^(-1) n^(-2) n^(-p)
2進数の桁の重み 2^(p-1) 2^2 2^1 2^0 . 2^(-1) 2^(-2) 2^(-p)
10進数の桁の重み 10^(p-1) 10^2 10^1 10^0 . 10^(-1) 10^(-2) 10^(-p)

10進数→2進数の変換

それでは10進数を2進数に変換してみましょう。今回は10進数の「26.625」を2進数にします。手順は以下のとおりです。

  • 変換対象の10進数を整数部分と小数部分に分解する。
  • 整数部分は2で割り(商が0になるまで継続)、出てきた余りを下から並べ直す。
  • 小数部分は2をかけていき、積に小数部分が残っていたらそこだけ取り出して2をかける。これを小数部分が無くなるまで継続。掛け算した結果の整数部分を順に並べる。
  • 整数部分(余りを並べたもの)と小数部分(掛け算の結果の整数部分を並べたもの)を再結合して変換完了。
具体的な解説は以下

まずは変換対象の10進数「26.625」を整数部分と小数部分に分解します。整数部分は「26」、小数部分は「625」になりますね。まずは整数部分の計算です。ひたすら2で割っていきます。

  • 26÷2=13 余り0
  • 13÷2=6 余り1
  • 6÷2=3 余り0
  • 3÷2=1 余り1
  • 1÷2=0 余り1(商が0になったので演算終了)
余りを下から並べ直すと、「11010」になります。これが整数部分の2進数です。

一方、小数部分はひたすら2をかけていきます。

  • 0.625×2=1.25 (積の整数部分 1)
  • 0.25×2=0.5 (積の整数部分 0)
  • 0.5×2=1.0 (積の整数部分 1  小数部分が0になったので演算終了)
積の整数部分を上から順番に並べると「101」になります。これが小数部分の2進数です。最後に整数部分と小数部分を再結合して変換完了です。結果は「11010.101」になりました。

2進数→10進数の変換

今度は2進数を10進数に変換します。今度は2進数の「11010.101」を10進数に直します。今度は桁の重みを使って計算します。2進数におけるp桁目の桁の重みは、

  • 整数部分の桁の重み=2の(p-1)乗
  • 小数部分の桁の重み=2の(-p)乗
になるので、これを使って計算していきます。
桁の数字 1 1 0 1 0 . 1 0 1
桁の重み 2^4 2^3 2^2 2^1 2^0 . 2^(-1) 2^(-2) 2^(-3)
桁の重み 16 8 4 2 1 . 1/2 (0.5) 1/4 (0.25) 1/8 (0.125)
桁の重み×桁の数字 16 8 0 2 0 . 0.5 0 0.125
桁の重みとその桁の数字の積を足し合わせます。今回の場合は 16+8+0+2+0+0.5+0+0.125 = 26.625 となり、無事に2進数を10進数に変換できました。

参考サイト

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

Bitcoin:

Monacoin:

Litecoin: