Notes_JP

【導出】10進数から2進数への変換法


  • 10進数から2進数へ変換する方法を解説する.
  • 10進数の各桁を求めるのと同じことをしているのがわかる.



「2進数の各桁を求めること」は,「10進数の各桁を求めるのと同じ操作」に過ぎないのです.
難しいことは何もありません.10進数の各桁をどうやって求めるか思い浮かべながら読んでみて下さい.

2進数とは

まず,2進数とは何だったか思い出してみましょう.

2進数とは,
\begin{align}
X=
a_N\cdot 2^N+\cdots + a_0\cdot 2^0
+a_{-1}\cdot 2^{-1}+a_{-2}\cdot 2^{-2}+\cdots
\qquad(a_n=0,1)
\end{align}
で表される実数$X$を
\begin{align}
(X)_2=a_N \cdots a_0.a_{-1}a_{-2}\cdots
\end{align}
と表す方法のことです.

10進数から2進数への変換

  • Step1:整数部分の各桁を求める
    まず,$X$の整数部分
    \begin{align}
    a_N\cdot 2^N+\cdots + a_0\cdot 2^0
    \tag{1}\label{eq:zpart}
    \end{align}
    を2進数で表す方法を考えましょう.
    • $a_0$を求める
      \begin{align}
      a_N\cdot 2^N+\cdots + a_0\cdot 2^0
      =2\cdot\color{blue}{(a_N\cdot 2^{N-1}+\cdots + a_1\cdot 2^0)}+\color{red}{a_0}
      \end{align}
      ですから,式(\ref{eq:zpart})を2で割ると,その余りとして$\color{red}{a_0}$が求めらることがわかります.
    • $a_1$を求める
      さて,式(\ref{eq:zpart})を2で割った商$\color{blue}{(a_N\cdot 2^{N-1}+\cdots + a_1\cdot 2^0)}$を見ると,これを2で割った余りとして$a_1$が求められることがわかりますね.
    • $a_n$を求める
      以下同じ操作を続けることで,$a_n$を求めることができます.
  • Step2:小数部分の各桁を求める
    次に,$X$の小数部分
    \begin{align}
    a_{-1}\cdot 2^{-1}+a_{-2}\cdot 2^{-2}+\cdots
    \tag{2}\label{eq:2part}
    \end{align}
    を2進数で表す方法を考えましょう.
    • $a_{-1}$を求める
      整数部分を変換する操作と同じ発想です.今度は$2^{-1}$をくくり出すと,
      \begin{align}
      a_{-1}\cdot 2^{-1}+a_{-2}\cdot 2^{-2}+\cdots
      =2^{-1}\cdot\bigl[\color{red}{a_{-1}}+ \color{blue}{(a_{-2}\cdot 2^{-1}+a_{-3}\cdot 2^{-2}+\cdots)}\bigr]
      \end{align}
      ですから,式(\ref{eq:2part})に2を掛けると,その整数部分として$\color{red}{a_{-1}}$が求めらることがわかります.
    • $a_{-2}$を求める
      式(\ref{eq:2part})に2を掛けて得られた小数部分$$\color{blue}{(a_{-2}\cdot 2^{-1}+a_{-3}\cdot 2^{-2}+\cdots)}$$に2を掛けたときの整数部分が$a_{-2}$です.
    • $a_{-n}$を求める
      同じ操作を繰り返すことで求めることができます.

練習問題:10進数から$N$進数への変換

上では2進数への変換を議論しましたが,全く同様に$N$進数への変換方法も導けます.
(まずは,10進数の各桁を上の方法で求めていることを再確認してみて下さい.)

応用

このような,「級数の係数を求める」手法は様々な場面で出くわします.
例えば,

  • 複素関数論における留数の公式
  • Fourier級数
  • ベクトルの各成分を求める方法

を思い出してみてください.

プライバシーポリシー