基数変換 10進法 2進法 8進法 16進法

ここでは「10進法↔2進法、8進法、16進法」、「2進法↔8進法、16進法」の基数変換を手計算でどのように実行するのか説明します。

数式の表示に時間がかかることがあります。 ネットやブラウザの環境によって違いますが、遅い場合でも30秒程度で表示されると思います。

2進法について全く聞いたことのない「基数?」「進法?」「位取り?」という人は(こちら)のリンクを先に見てください。

自然数の場合の変換だけではなく、小数循環小数の場合の変換も扱います。 循環小数に関しては(こちら)のリンク先でも詳しく解説してますので参考にしてください。

とにかく位取り法の仕組みさえ分かってしまえばそれほど難しくありません。 最初は面倒臭くても、手を動かしながらじっくり計算を追っていくと良いでしょう。 その後に、自分で適当な数を設定して、自作の問題を何題か作ってやってみてください。 答え合わせには(こちら)のスクリプトやプログラマ電卓が使えます。

今は電卓やパソコンスマホがあるので、手計算の必要性は低くなってます。 情報処理関連の資格を取る場合は手計算による基数変換は必須です。 資格を取る予定ではない方も、一度はチャレンジしてみることをお勧めします。 手を動かしてみると位取りの仕組みが凄く上手くできてることが実感できます。

目次

10進法の仕組み
目次へ↑

位取りの仕組みと指数

まずは位取り記数法の仕組みを理解することから始めていきます。 10進法の仕組みを知っておくことが重要です。 普段使っている数なので当たり前のように見えるかもしれませんが、歴史的には15世紀頃に確立したかなり新しい概念です。 他の基数を考える際の基本になります。 しっかり理解しましょう。

累乗指数を使うと桁の纏まりを非常に綺麗に表すことができます。 10進法の各桁は10の累乗の束(たば)を表しています。 束とはいくつかの数を一括りにして纏めたものです。 $10$の纏まりの束を$10^1$で表します。 $10$の束を$10$個まとめた$10\times 10=100$の束を$10^2$で表します。 $10$の束を$0$個まとめると$10^0=1$になります。

例として「$2036$」という10進数を考えてみましょう。 下の枠内で、次のような計算を行っています。

\begin{align*} 2036 &= 2\times 1000 + 0\times 100 + 3\times 10 + 6\times 1 \\ &= 2\times 10^3 + 0\times 10^2 + 3\times 10^1 + 6\times 10^0 \end{align*}

0以上で1より小さい数の概念を位取り法を使って表現した数を「小数」といいます。 指数法則によって、負の指数を用いて逆数を表すことができるようになります。 負の累乗指数を使うことで小数の桁の纏まりを綺麗に扱うことができます。

例として「$20.36$」という10進法の小数を考えてみましょう。

\begin{align*} 20.36 &= 2\times 10 + 0\times 1 + 3\times 0.1 + 6\times 0.01 \\ &= 2\times 10 + 0\times 1 + 3\times \frac{1}{10} + 6\times \frac{1}{100} \\ &= 2\times 10^1 + 0\times 10^0 + 3\times 10^{-1} + 6\times 10^{-2} \end{align*}

$10=10^1$を掛けることで、$10$の指数が一つずつ増えて、小数点が一つ右に移ります。

\begin{align*} 20.36\times 10^1 &= \left(2\times 10^1 + 0\times 10^0 + 3\times 10^{-1} + 6\times 10^{-2}\right)\times 10^1 \\ &= 2\times 10^1\times 10^1 + 0\times 10^0\times 10^1 + 3\times 10^{-1}\times 10^1 + 6\times 10^{-2}\times 10^1 \\ &= 2\times 10^{1+1} + 0\times 10^{0+1} + 3\times 10^{-1+1} + 6\times 10^{-2+1} \\ &= 2\times 10^2 + 0\times 10^1 + 3\times 10^0 + 6\times 10^{-1} \\ &= 203.6 \\ \end{align*}

$10$で割る($10^{-1}$を掛ける)ことで、$10$の指数が一つずつ減って、小数点が一つ左に動きます。

\begin{align*} 20.36\times 10^{-1} &= \left(2\times 10^1 + 0\times 10^0 + 3\times 10^{-1} + 6\times 10^{-2}\right)\times 10^{-1} \\ &= 2\times 10^1\times 10^{-1} + 0\times 10^0\times 10^{-1} + 3\times 10^{-1}\times 10^{-1} + 6\times 10^{-2}\times 10^{-1} \\ &= 2\times 10^{1-1} + 0\times 10^{0-1} + 3\times 10^{-1-1} + 6\times 10^{-2-1} \\ &= 2\times 10^0 + 0\times 10^{-1} + 3\times 10^{-2} + 6\times 10^{-3} \\ &= 2.036 \\ \end{align*}

各桁の値を取り出す方法

10進法の自然数の各桁の値を知るには、10で割った余りを順々に見ていけば分かります。 例として10進数の「$3507$」の各桁の値を10で割り算をしていって求めてみましょう。

\begin{align*} \require{enclose} \begin{array}{rll} 10 )\!\enclose{bottom}{3507} & & \\[-3pt] 10 )\!\enclose{bottom}{\phantom{0}350} & \cdots 7 & \quad \rightarrow 10^0\mbox{の桁の値は}7 \\[-3pt] 10 )\!\enclose{bottom}{\phantom{00}35} & \cdots 0 & \quad \rightarrow 10^1\mbox{の桁の値は}0 \\[-3pt] 10 )\!\enclose{bottom}{\phantom{000}3} & \cdots 5 & \quad \rightarrow 10^2\mbox{の桁の値は}5 \\[-3pt] \phantom{10 )}\!\enclose{}{\phantom{000}0} & \cdots 3 & \quad \rightarrow 10^3\mbox{の桁の値は}3 \\[-3pt] \end{array} \end{align*}
ちなみに上記の計算を指数表記で眺めると次のようになります。 $10$ で割るということは $10^{-1}$ を掛けるのと同じです。 $10^{-1}$ を掛けると各桁の $10$ の指数が1つずつ減ります。 その結果、$\color{blue}{\mbox{商}}$の部分と$\color{red}{\mbox{余り}}$の部分に色分けされます。 $\color{red}{\mbox{余り}}$を順々に取り出すことで各桁の値が分かる、ということになります。
\begin{align*} \begin{array}{rll} 3507 &= 3\cdot 10^3+5\cdot 10^2+0\cdot 10^1+7\cdot 10^0 & \\ 3507\cdot 10^{-1} &= \color{blue}{3\cdot 10^2+5\cdot 10^1+0\cdot 10^0}+\color{red}{7\cdot 10^{-1}} &= \color{blue}{350}.\color{red}{7}\\ 350\cdot 10^{-1} &= \color{blue}{3\cdot 10^1+5\cdot 10^0}+\color{red}{0\cdot 10^{-1}} &= \color{blue}{35}.\color{red}{0} \\ 35\cdot 10^{-1} &= \color{blue}{3\cdot 10^0}+\color{red}{5\cdot 10^{-1}} &= \color{blue}{3}.\color{red}{5} \\ 3\cdot 10^{-1} &= \color{red}{3\cdot 10^{-1}} &= \color{blue}{0}.\color{red}{3} \\ \end{array} \end{align*}

10進法の純小数の各桁の値は、10を掛けた時の整数部を順々に見ていけば分かります。 例として10進数の「$0.3507$」という数値の各桁の値を10で掛け算をしていって求めてみましょう。

\begin{align*} \begin{array}{rlll} 0.3507\times 10 &= 3.507 &= 3 + 0.507 &\rightarrow 10^{-1}\mbox{の桁の値は}3 \\ 0.507\times 10 &= 5.07 &= 5 + 0.07 &\rightarrow 10^{-2}\mbox{の桁の値は}5 \\ 0.07\times 10 &= 0.7 &= 0 + 0.7 &\rightarrow 10^{-3}\mbox{の桁の値は}0 \\ 0.7\times 10 &= 7.0 &= 7 + 0.0 &\rightarrow 10^{-4}\mbox{の桁の値は}7 \\ \end{array} \end{align*}
ちなみに上記の計算を指数表記で眺めると次のようになります。 $10$ を掛けるということは $10^1$ を掛けるのと同じです。 $10^1$ を掛けると各桁の $10$ の指数が1つずつ増えます。 その結果、$\color{blue}{\mbox{整数部}}$と$\color{red}{\mbox{小数部}}$に色分けされます。 $\color{blue}{\mbox{整数部}}$を順々に取り出すことで各桁の値が分かる、ということになります。
\begin{align*} \begin{array}{rll} 0.3507 &= 3\cdot 10^{-1}+5\cdot 10^{-2}+0\cdot 10^{-3}+7\cdot 10^{-4} & \\ 0.3507\cdot 10^1 &= \color{blue}{3\cdot 10^0}+\color{red}{5\cdot 10^{-1}+0\cdot 10^{-2}+7\cdot 10^{-3}} &= \color{blue}{3}.\color{red}{507} \\ 0.507\cdot 10^1 &= \color{blue}{5\cdot 10^0}+\color{red}{0\cdot 10^{-1}+7\cdot 10^{-2}} &= \color{blue}{5}.\color{red}{07} \\ 0.07\cdot 10^1 &= \color{blue}{0\cdot 10^0}+\color{red}{7\cdot 10^{-1}} &= \color{blue}{0}.\color{red}{7} \\ 0.7\cdot 10^1 &= \color{blue}{7\cdot 10^0} &= \color{blue}{7}.\color{red}{0} \\ \end{array} \end{align*}

2進数から10進数への変換
目次へ↑

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

2進法の各桁は2の累乗の束を表しています。 例として「$10101$」という2進数を考えてみましょう。

つまり「2進数の$10101$」と「10進数の$21$」は同じ数値を表しているということになります。 計算した後、プログラマ電卓等で確かめてみると良いでしょう。 (こちら)のスクリプトでも確かめることができます。 分母分子を[2]進法の自然数に設定して、分子に[10101]を、分母に[1]を入力します。 [10]進法の分数に[変換]ボタンを押すと、確かめることができます。 上の分数を[10]進法の小数に[変換]ボタンを押しても、確かめることができます。
\begin{align*} \mbox{(2進法)}\;10101 \rightarrow & 1\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 1\cdot 2^0\;\mbox{(10進法)} \\ &= 1\cdot 16 + 0\cdot 8 + 1\cdot 4 + 0\cdot 2 + 1\cdot 1 \\ &= 16 + 4 + 1 \\ &= 21 \end{align*}
上記の右側の式は10進法であることに注意してください。 10進法の「$2$(ニ)」は2進法では「$10$(イチ・ゼロ)」になります。 10進法の「$3$(サン)」は2進法では「$11$(イチ・イチ)」になります。 10進法の「$4$(ヨン)」は2進法では「$100$(イチ・ゼロ・ゼロ)」になります。 下式の上下の対応で、同じ数値を表現していることになります。
\begin{align*} \mbox{(2進法)}\;10101 &= 1\cdot 10^{100} + 0\cdot 10^{11} + 1\cdot 10^{10} + 0\cdot 10^1 + 1\cdot 10^0 \\ &\updownarrow \\ \mbox{(10進法)}\;21 &= 1\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 1\cdot 2^0 \\ \end{align*}

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

次に2進法の小数点付きの例として「$10.101$」という2進数を考えてみましょう。

つまり「2進数の$10.101$」と「10進数の$2.625$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[2]進法の自然数に設定して、分子に[10101]を、分母に[1000]を入力します。 上の分数を[10]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \mbox{(2進法)}\;10.101 \rightarrow & 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3}\;\mbox{(10進法)} \\ &= 1\cdot 2 + 0\cdot 1 + 1\cdot \frac{1}{2} + 0\cdot \frac{1}{4} + 1\cdot \frac{1}{8} \\ &= 1\cdot 2 + 0\cdot 1 + 1\cdot 0.5 + 0\cdot 0.25 + 1\cdot 0.125 \\ &= 2 + 0.5 + 0.125 \\ &= 2.625 \end{align*}
上記の右側の式は10進法であることに注意してください。 10進法の「$2$(ニ)」は2進法では「$10$(イチ・ゼロ)」になります。 10進法の「$3$(サン)」は2進法では「$11$(イチ・イチ)」になります。 下式の上下の対応で、同じ数値を表現していることになります。
\begin{align*} \mbox{(2進法)}\;10.101 &= 1\cdot 10^1 + 0\cdot 10^0 + 1\cdot 10^{-1} + 0\cdot 10^{-10} + 1\cdot 10^{-11} \\ &\updownarrow \\ \mbox{(10進法)}\;2.625 &= 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} \\ \end{align*}

10進数から2進数への変換
目次へ↑

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

2進法の自然数の各桁の値は、2で割った余りを順々に見ていけば分かります。 これを利用すれば10進法の自然数を2進法の自然数に変換することができます。 例として10進数の「$109$」を2進数に変換してみましょう。

つまり「10進数の$109$」と「2進数の$1101101$」は同じ数値を表しているということになります。 計算した後、プログラマ電卓等で確かめてみると良いでしょう。 (こちら)のスクリプトでも確かめることができます。 分母分子を[10]進法の自然数に設定して、分子に[109]を、分母に[1]を入力します。 [2]進法の分数に[変換]ボタンを押すと、確かめることができます。 上の分数を[2]進法の小数に[変換]ボタンを押しても、確かめることができます。
\begin{align*} \require{enclose} \begin{array}{rll} 2 )\!\enclose{bottom}{109} & & \\[-3pt] 2 )\!\enclose{bottom}{\phantom{0}54} & \cdots 1 & \quad \rightarrow 2^0\mbox{の桁の値は}1 \\[-3pt] 2 )\!\enclose{bottom}{\phantom{0}27} & \cdots 0 & \quad \rightarrow 2^1\mbox{の桁の値は}0 \\[-3pt] 2 )\!\enclose{bottom}{\phantom{0}13} & \cdots 1 & \quad \rightarrow 2^2\mbox{の桁の値は}1 \\[-3pt] 2 )\!\enclose{bottom}{\phantom{00}6} & \cdots 1 & \quad \rightarrow 2^3\mbox{の桁の値は}1 \\[-3pt] 2 )\!\enclose{bottom}{\phantom{00}3} & \cdots 0 & \quad \rightarrow 2^4\mbox{の桁の値は}0 \\[-3pt] 2 )\!\enclose{bottom}{\phantom{00}1} & \cdots 1 & \quad \rightarrow 2^5\mbox{の桁の値は}1 \\[-3pt] \phantom{2 )}\!\enclose{}{\phantom{00}0} & \cdots 1 & \quad \rightarrow 2^6\mbox{の桁の値は}1 \\[-3pt] \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;109 \rightarrow 1101101\;\mbox{(2進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} 109 &= 54\cdot 2 + 1 \\ 54 &= 27\cdot 2 + 0 \\ 27 &= 13\cdot 2 + 1 \\ 13 &= 6\cdot 2 + 1 \\ 6 &= 3\cdot 2 + 0 \\ 3 &= 1\cdot 2 + 1 \\ \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を2の累乗で展開した式が得られるわけです。
\begin{align*} 109 &= 54\cdot 2 + 1 \\ &= \left(27\cdot 2 + 0\right)\cdot 2 + 1 \qquad \fbox{$54 = 27\cdot 2 + 0$ で置き換えた} \\ &= 27\cdot 2^2 + 0\cdot 2 + 1 \\ &= \left(13\cdot 2 + 1\right)\cdot 2^2 + 0\cdot 2 + 1 \qquad \fbox{$27 = 13\cdot 2 + 1$ で置き換えた} \\ &= 13\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \\ &= \left(6\cdot 2 + 1\right)\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \qquad \fbox{$13 = 6\cdot 2 + 1$ で置き換えた} \\ &= 6\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \\ &= \left(3\cdot 2 + 0\right)\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \qquad \fbox{$6 = 3\cdot 2 + 0$ で置き換えた} \\ &= 3\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \\ &= \left(1\cdot 2 + 1\right)\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \qquad \fbox{$3 = 1\cdot 2 + 1$ で置き換えた} \\ &= 1\cdot 2^6 + 1\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2 + 1 \\ &= 1\cdot 2^6 + 1\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 1\cdot 2^0 \\ \end{align*}

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

2進法の純小数の各桁の値は、2を掛けた時の整数部を順々に見ていけば分かります。 これを利用して10進法の純小数を2進法の純小数に変換することができます。 例として10進数の「$0.40625$」を2進数に変換してみましょう。

つまり「10進数の$0.40625$」と「2進数の$0.01101$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[40625]を、分母に[100000]を入力します。 上の分数を[2]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rlll} 0.40625\times 2 &= 0.8125 &= 0 + 0.8125 &\rightarrow 2^{-1}\mbox{の桁の値は}0 \\ 0.8125\times 2 &= 1.625 &= 1 + 0.625 &\rightarrow 2^{-2}\mbox{の桁の値は}1 \\ 0.625\times 2 &= 1.25 &= 1 + 0.25 &\rightarrow 2^{-3}\mbox{の桁の値は}1 \\ 0.25\times 2 &= 0.5 &= 0 + 0.5 &\rightarrow 2^{-4}\mbox{の桁の値は}0 \\ 0.5\times 2 &= 1.0 &= 1 + 0.0 &\rightarrow 2^{-5}\mbox{の桁の値は}1 \\ \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;0.40625 \rightarrow 0.01101\;\mbox{(2進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.40625 &= 0.40625\cdot 2\cdot 2^{-1} &= \left(0 + 0.8125\right)\cdot 2^{-1} &= 0\cdot 2^{-1} + 0.8125\cdot 2^{-1} \\ 0.8125 &= 0.8125\cdot 2\cdot 2^{-1} &= \left(1 + 0.625\right)\cdot 2^{-1} &= 1\cdot 2^{-1} + 0.625\cdot 2^{-1} \\ 0.625 &= 0.625\cdot 2\cdot 2^{-1} &= \left(1 + 0.25\right)\cdot 2^{-1} &= 1\cdot 2^{-1} + 0.25\cdot 2^{-1} \\ 0.25 &= 0.25\cdot 2\cdot 2^{-1} &= \left(0 + 0.5\right)\cdot 2^{-1} &= 0\cdot 2^{-1} + 0.5\cdot 2^{-1} \\ 0.5 &= 0.5\cdot 2\cdot 2^{-1} &= 1\cdot 2^{-1} & \\ \end{array} \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を2の累乗で展開した式が得られるわけです。
\begin{align*} 0.40625 &= 0\cdot 2^{-1} + 0.8125\cdot 2^{-1} \\ &= 0\cdot 2^{-1} + \left(1\cdot 2^{-1} + 0.625\cdot 2^{-1}\right)\cdot 2^{-1} \qquad \fbox{$0.8125 = 1\cdot 2^{-1} + 0.625\cdot 2^{-1}$ で置き換えた} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 0.625\cdot 2^{-2} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + \left(1\cdot 2^{-1} + 0.25\cdot 2^{-1}\right)\cdot 2^{-2} \qquad \fbox{$0.625 = 1\cdot 2^{-1} + 0.25\cdot 2^{-1}$ で置き換えた} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0.25\cdot 2^{-3} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + \left(0\cdot 2^{-1} + 0.5\cdot 2^{-1}\right)\cdot 2^{-3} \qquad \fbox{$0.25 = 0\cdot 2^{-1} + 0.5\cdot 2^{-1}$ で置き換えた} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0\cdot 2^{-4} + 0.5\cdot 2^{-4} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0\cdot 2^{-4} + 1\cdot 2^{-1}\cdot 2^{-4} \qquad \fbox{$0.5 = 1\cdot 2^{-1}$ で置き換えた} \\ &= 0\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0\cdot 2^{-4} + 1\cdot 2^{-5} \\ \end{align*}

10進数純小数から2進数純小数(循環小数)への変換

次の例として10進数の「$0.1$」を2進数に変換してみましょう。 これは循環小数の2進数になる例です。

つまり「10進数の$0.1$」と「2進数の循環小数$0.0\dot{0}01\dot{1}$」は同じ数値を表しているということになります。ドットがついた数値の間の $0011$ のパターンを無限に繰り返す循環小数です。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[1]を、分母に[10]を入力します。 上の分数を[2]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rlll} 0.1\times 2 &= 0.2 &= 0 + \color{red}{0.2} &\rightarrow 2^{-1}\mbox{の桁の値は}0 \\ \color{red}{0.2}\times 2 &= 0.4 &= \color{blue}{0} + 0.4 &\rightarrow 2^{-2}\mbox{の桁の値は}\color{blue}{0} \\ 0.4\times 2 &= 0.8 &= \color{blue}{0} + 0.8 &\rightarrow 2^{-3}\mbox{の桁の値は}\color{blue}{0} \\ 0.8\times 2 &= 1.6 &= \color{blue}{1} + 0.6 &\rightarrow 2^{-4}\mbox{の桁の値は}\color{blue}{1} \\ 0.6\times 2 &= 1.2 &= \color{blue}{1} + \color{red}{0.2} &\rightarrow 2^{-5}\mbox{の桁の値は}\color{blue}{1} \\ \end{array} \end{align*} \begin{align*} \mbox{(10進法の有限小数)}\;0.1 \rightarrow 0.0\,\color{blue}{0011}\,\color{blue}{0011}\,\color{blue}{0011}\,\color{blue}{0011}\color{blue}{\cdots}\;\mbox{(2進法の循環小数)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.1 &= 0.1\cdot 2\cdot 2^{-1} &= \left(0 + \color{red}{0.2}\right)\cdot 2^{-1} &= 0\cdot 2^{-1} + \color{red}{0.2}\cdot 2^{-1} \\ \color{red}{0.2} &= 0.2\cdot 2\cdot 2^{-1} &= \left(\color{blue}{0} + 0.4\right)\cdot 2^{-1} &= \color{blue}{0}\cdot 2^{-1} + 0.4\cdot 2^{-1} \\ 0.4 &= 0.4\cdot 2\cdot 2^{-1} &= \left(\color{blue}{0} + 0.8\right)\cdot 2^{-1} &= \color{blue}{0}\cdot 2^{-1} + 0.8\cdot 2^{-1} \\ 0.8 &= 0.8\cdot 2\cdot 2^{-1} &= \left(\color{blue}{1} + 0.6\right)\cdot 2^{-1} &= \color{blue}{1}\cdot 2^{-1} + 0.6\cdot 2^{-1} \\ 0.6 &= 0.6\cdot 2\cdot 2^{-1} &= \left(\color{blue}{1} + \color{red}{0.2}\right)\cdot 2^{-1} &= \color{blue}{1}\cdot 2^{-1} + \color{red}{0.2}\cdot 2^{-1} \\ \end{array} \end{align*}
これらの式を組み合わせていきます。 まずは $\color{red}{0.2}$ に注目します。
\begin{align*} \color{red}{0.2} &= \color{blue}{0}\cdot 2^{-1} + 0.4\cdot 2^{-1} \\ &= \color{blue}{0}\cdot 2^{-1} + \left(\color{blue}{0}\cdot 2^{-1} + 0.8\cdot 2^{-1}\right)\cdot 2^{-1} \qquad \fbox{$0.4 = \color{blue}{0}\cdot 2^{-1} + 0.8\cdot 2^{-1}$ で置き換えた} \\ &= \color{blue}{0}\cdot 2^{-1} + \color{blue}{0}\cdot 2^{-2} + 0.8\cdot 2^{-2} \\ &= \color{blue}{0}\cdot 2^{-1} + \color{blue}{0}\cdot 2^{-2} + \left(\color{blue}{1}\cdot 2^{-1} + 0.6\cdot 2^{-1}\right)\cdot 2^{-2} \qquad \fbox{$0.8 = \color{blue}{1}\cdot 2^{-1} + 0.6\cdot 2^{-1}$ で置き換えた} \\ &= \color{blue}{0}\cdot 2^{-1} + \color{blue}{0}\cdot 2^{-2} + \color{blue}{1}\cdot 2^{-3} + 0.6\cdot 2^{-3} \\ &= \color{blue}{0}\cdot 2^{-1} + \color{blue}{0}\cdot 2^{-2} + \color{blue}{1}\cdot 2^{-3} + \left(\color{blue}{1}\cdot 2^{-1} + \color{red}{0.2}\cdot 2^{-1}\right)\cdot 2^{-3} \qquad \fbox{$0.6 = \color{blue}{1}\cdot 2^{-1} + \color{red}{0.2}\cdot 2^{-1}$ で置き換えた} \\ &= \color{blue}{0}\cdot 2^{-1} + \color{blue}{0}\cdot 2^{-2} + \color{blue}{1}\cdot 2^{-3} + \color{blue}{1}\cdot 2^{-4} + \color{red}{0.2}\cdot 2^{-4} \qquad \\ \end{align*}
結果、次のような $\color{red}{0.2}$ を表す式の中に $\color{red}{0.2}$ が入っている式が得られます。 このような自分の中に自分が入っている式が、無限に同じパターンを繰り返す循環節を生み出す元になります。
\begin{align*} \color{red}{0.2} = \color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4} \end{align*}
10進数の $0.1$ を2の累乗で展開した式は次のようになります。
\begin{align*} 0.1 &= 0\cdot 2^{-1} + \color{red}{0.2}\cdot 2^{-1} \\ &= 0\cdot 2^{-1} + \left(\color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}\right)\cdot 2^{-1} \qquad \fbox{$\color{red}{0.2} = \color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}$ で置き換えた} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{red}{0.2}\cdot 2^{-5} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \left(\color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}\right)\cdot 2^{-5} \qquad \fbox{$\color{red}{0.2} = \color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}$ で置き換えた} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{blue}{0\cdot 2^{-6} + 0\cdot 2^{-7} + 1\cdot 2^{-8} + 1\cdot 2^{-9}} + \color{red}{0.2}\cdot 2^{-9} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{blue}{0\cdot 2^{-6} + 0\cdot 2^{-7} + 1\cdot 2^{-8} + 1\cdot 2^{-9}} + \left(\color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}\right)\cdot 2^{-9} \qquad \fbox{$\color{red}{0.2} = \color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}$ で置き換えた} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{blue}{0\cdot 2^{-6} + 0\cdot 2^{-7} + 1\cdot 2^{-8} + 1\cdot 2^{-9}} + \color{blue}{0\cdot 2^{-10} + 0\cdot 2^{-11} + 1\cdot 2^{-12} + 1\cdot 2^{-13}} + \color{red}{0.2}\cdot 2^{-13} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{blue}{0\cdot 2^{-6} + 0\cdot 2^{-7} + 1\cdot 2^{-8} + 1\cdot 2^{-9}} + \color{blue}{0\cdot 2^{-10} + 0\cdot 2^{-11} + 1\cdot 2^{-12} + 1\cdot 2^{-13}} + \left(\color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}\right)\cdot 2^{-13} \qquad \fbox{$\color{red}{0.2} = \color{blue}{0\cdot 2^{-1} + 0\cdot 2^{-2} + 1\cdot 2^{-3} + 1\cdot 2^{-4}} + \color{red}{0.2}\cdot 2^{-4}$ で置き換えた} \\ &= 0\cdot 2^{-1} + \color{blue}{0\cdot 2^{-2} + 0\cdot 2^{-3} + 1\cdot 2^{-4} + 1\cdot 2^{-5}} + \color{blue}{0\cdot 2^{-6} + 0\cdot 2^{-7} + 1\cdot 2^{-8} + 1\cdot 2^{-9}} + \color{blue}{0\cdot 2^{-10} + 0\cdot 2^{-11} + 1\cdot 2^{-12} + 1\cdot 2^{-13}} + \color{blue}{0\cdot 2^{-14} + 0\cdot 2^{-15} + 1\cdot 2^{-16} + 1\cdot 2^{-17}} + \color{red}{0.2}\cdot 2^{-17} \\ &\vdots \qquad \fbox{同じ処理の繰り返しが無限に続く} \end{align*}

16進数から10進数への変換
目次へ↑

16進法の各桁は16の累乗の束を表しています。 16進法の小数点付きの例として「$\rm 5c6.e2$」という16進数を考えてみましょう。

つまり「16進数の$\rm 5c6.e2$」と「10進数の$1478.8828125$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[16]進法の自然数に設定して、分子に[6e36c]を、分母に[100]を入力します。 上の分数を[10]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \mbox{(16進法)}\;\rm 5c6.e2 \rightarrow & 5\cdot 16^2 + 12\cdot 16^1 + 6\cdot 16^0 + 14\cdot 16^{-1} + 2\cdot 16^{-2}\;\mbox{(10進法)} \\ &= 5\cdot 256 + 12\cdot 16 + 6\cdot 1 + 14\cdot \frac{1}{16} + 2\cdot \frac{1}{256} \\ &= 5\cdot 256 + 12\cdot 16 + 6\cdot 1 + 14\cdot 0.0625 + 2\cdot 0.00390625 \\ &= 1280 + 192 + 6 + 0.875 + 0.0078125 \\ &= 1478.8828125 \\ \end{align*}
上記の右側の式は10進法であることに注意してください。 10進法の「$16$(ジュウロク)」は16進法では「$10$(イチ・ゼロ)」になります。 10進法の「$12$(ジュウニ)」は16進法では「$\rm c$(スィ―)」になります。 10進法の「$14$(ジュウヨン)」は16進法では「$\rm e$(イー)」になります。 下式の上下の対応で、同じ数値を表現していることになります。
\begin{align*} \mbox{(16進法)}\;\rm 5c6.e2 &= \rm 5\cdot 10^2 + c\cdot 10^1 + 6\cdot 10^0 + e\cdot 10^{-1} + 2\cdot 10^{-2} \\ &\updownarrow \\ \mbox{(10進法)}\;1478.8828125 &= 5\cdot 16^2 + 12\cdot 16^1 + 6\cdot 16^0 + 14\cdot 16^{-1} + 2\cdot 16^{-2} \\ \end{align*}

10進数から16進数への変換
目次へ↑

10進数自然数から16進数自然数への変換

16進法の自然数の各桁の値は、16で割った余りを順々に見ていけば分かります。 これを利用すれば10進法の自然数を16進法の自然数に変換することができます。 例として10進数の「$1478$」を16進数に変換してみましょう。

つまり「10進数の$1478$」と「16進数の$\rm 5c6$」は同じ数値を表しているということになります。 計算した後、プログラマ電卓等で確かめてみると良いでしょう。 (こちら)のスクリプトでも確かめることができます。 分母分子を[10]進法の自然数に設定して、分子に[1478]を、分母に[1]を入力します。 [16]進法の分数に[変換]ボタンを押すと、確かめることができます。 上の分数を[16]進法の小数に[変換]ボタンを押しても、確かめることができます。
\begin{align*} \require{enclose} \begin{array}{rll} 16 )\!\enclose{bottom}{1478} & & \\[-3pt] 16 )\!\enclose{bottom}{\phantom{00}92} & \cdots 6 & \quad \rightarrow 16^0\mbox{の桁の値は}\;\,6 \quad \mbox{16進数で}6 \\[-3pt] 16 )\!\enclose{bottom}{\phantom{000}5} & \cdots 12 & \quad \rightarrow 16^1\mbox{の桁の値は}12 \quad \mbox{16進数で}\rm c \\[-3pt] \phantom{16 )}\!\enclose{}{\phantom{000}0} & \cdots 5 & \quad \rightarrow 16^2\mbox{の桁の値は}\;\,5 \quad \mbox{16進数で}5 \\[-3pt] \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;\rm 1478 \rightarrow 5c6\;\mbox{(16進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} 1478 &= 92\cdot 16 + 6 \\ 92 &= 5\cdot 16 + 12 \\ \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を16の累乗で展開した式が得られるわけです。
\begin{align*} 1478 &= 92\cdot 16^1 + 6 \\ &= \left(5\cdot 16 + 12 \right)\cdot 16^1 + 6 \qquad \fbox{$92 = 5\cdot 16 + 12$ で置き換えた} \\ &= 5\cdot 16^2 + 12\cdot 16^1 + 6 \\ &= 5\cdot 16^2 + 12\cdot 16^1 + 6\cdot 16^0 \\ \end{align*}

10進数純小数から16進数純小数への変換

16進法の純小数の各桁の値は、16を掛けた時の整数部を順々に見ていけば分かります。 これを利用して10進法の純小数を16進法の純小数に変換することができます。 例として10進数の「$0.8828125$」を16進数に変換してみましょう。

つまり「10進数の$0.8828125$」と「16進数の$\rm 0.e2$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[8828125]を、分母に[10000000]を入力します。 上の分数を[16]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rllll} 0.8828125\times 16 &= 14.125 &= 14 + 0.125 &\rightarrow 16^{-1}\mbox{の桁の値は}14 &\mbox{16進数で}\rm e \\ 0.125\times 16 &= 2.0 &= 2 + 0.0 &\rightarrow 16^{-2}\mbox{の桁の値は}\;\,2 &\mbox{16進数で}2\\ \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;\rm 0.8828125 \rightarrow 0.e2\;\mbox{(16進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.8828125 &= 0.8828125\cdot 16\cdot 16^{-1} &= \left(14 + 0.125\right)\cdot 16^{-1} &= 14\cdot 16^{-1} + 0.125\cdot 16^{-1} \\ 0.125 &= 0.125\cdot 16\cdot 16^{-1} &= 2\cdot 16^{-1} & \\ \end{array} \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を16の累乗で展開した式が得られるわけです。
\begin{align*} 0.8828125 &= 14\cdot 16^{-1} + 0.125\cdot 16^{-1} \\ &= 14\cdot 16^{-1} + 2\cdot 16^{-1}\cdot 16^{-1} \qquad \fbox{$0.125 = 2\cdot 16^{-1}$ で置き換えた} \\ &= 14\cdot 16^{-1} + 2\cdot 16^{-2} \\ \end{align*}

10進数純小数から16進数小数(循環小数)への変換

次の例として10進数の「$0.11$」を16進数に変換してみましょう。 これは循環小数の16進数になる例です。

つまり「10進数の$0.11$」と「16進数の循環小数$\rm 0.1\dot{c}28f\dot{5}$」は同じ数値を表しているということになります。ドットがついた数値の間の $\rm c28f5$ のパターンを無限に繰り返す循環小数です。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[11]を、分母に[100]を入力します。 上の分数を[16]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rlll} 0.11\times 16 &= 1.76 &= 1 + \color{red}{0.76} &\rightarrow 16^{-1}\mbox{の桁の値は}\;\,1 \quad \mbox{16進数で}1 \\ \color{red}{0.76}\times 16 &= 12.16 &= \color{blue}{12} + 0.16 &\rightarrow 16^{-2}\mbox{の桁の値は}\color{blue}{12} \quad \mbox{16進数で}\rm \color{blue}{c} \\ 0.16\times 16 &= 2.56 &= \color{blue}{2} + 0.56 &\rightarrow 16^{-3}\mbox{の桁の値は}\;\,\color{blue}{2} \quad \mbox{16進数で}\color{blue}{2} \\ 0.56\times 16 &= 8.96 &= \color{blue}{8} + 0.96 &\rightarrow 16^{-4}\mbox{の桁の値は}\;\,\color{blue}{8} \quad \mbox{16進数で}\color{blue}{8} \\ 0.96\times 16 &= 15.36 &= \color{blue}{15} + 0.36 &\rightarrow 16^{-5}\mbox{の桁の値は}\color{blue}{15} \quad \mbox{16進数で}\rm \color{blue}{f} \\ 0.36\times 16 &= 5.76 &= \color{blue}{5} + \color{red}{0.76} &\rightarrow 16^{-6}\mbox{の桁の値は}\;\,\color{blue}{5} \quad \mbox{16進数で}\color{blue}{5} \\ \end{array} \end{align*} \begin{align*} \mbox{(10進法の有限小数)}\;\rm 0.11 \rightarrow 0.1\,\color{blue}{c28f5}\,\color{blue}{c28f5}\,\color{blue}{c28f5}\,\color{blue}{c28f5}\color{blue}{\cdots}\;\mbox{(16進法の循環小数)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.11 &= 0.11\cdot 16\cdot 16^{-1} &= \left(1 + \color{red}{0.76}\right)\cdot 16^{-1} &= 1\cdot 16^{-1} + \color{red}{0.76}\cdot 16^{-1} \\ \color{red}{0.76} &= 0.76\cdot 16\cdot 16^{-1} &= \left(\color{blue}{12} + 0.16\right)\cdot 16^{-1} &= \color{blue}{12}\cdot 16^{-1} + 0.16\cdot 16^{-1} \\ 0.16 &= 0.16\cdot 16\cdot 16^{-1} &= \left(\color{blue}{2} + 0.56\right)\cdot 16^{-1} &= \color{blue}{2}\cdot 16^{-1} + 0.56\cdot 16^{-1} \\ 0.56 &= 0.56\cdot 16\cdot 16^{-1} &= \left(\color{blue}{8} + 0.96\right)\cdot 16^{-1} &= \color{blue}{8}\cdot 16^{-1} + 0.96\cdot 16^{-1} \\ 0.96 &= 0.96\cdot 16\cdot 16^{-1} &= \left(\color{blue}{15} + 0.36\right)\cdot 16^{-1} &= \color{blue}{15}\cdot 16^{-1} + 0.36\cdot 16^{-1} \\ 0.36 &= 0.36\cdot 16\cdot 16^{-1} &= \left(\color{blue}{5} + \color{red}{0.76}\right)\cdot 16^{-1} &= \color{blue}{5}\cdot 16^{-1} + \color{red}{0.76}\cdot 16^{-1} \\ \end{array} \end{align*}
これらの式を組み合わせていきます。 まずは $\color{red}{0.76}$ に注目します。
\begin{align*} \color{red}{0.76} &= \color{blue}{12}\cdot 16^{-1} + 0.16\cdot 16^{-1} \\ &= \color{blue}{12}\cdot 16^{-1} + \left(\color{blue}{2}\cdot 16^{-1} + 0.56\cdot 16^{-1}\right)\cdot 16^{-1} \qquad \fbox{$0.16 = \color{blue}{2}\cdot 16^{-1} + 0.56\cdot 16^{-1}$ で置き換えた} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + 0.56\cdot 16^{-2} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \left(\color{blue}{8}\cdot 16^{-1} + 0.96\cdot 16^{-1}\right)\cdot 16^{-2} \qquad \fbox{$0.56 = \color{blue}{8}\cdot 16^{-1} + 0.96\cdot 16^{-1}$ で置き換えた} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \color{blue}{8}\cdot 16^{-3} + 0.96\cdot 16^{-3} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \color{blue}{8}\cdot 16^{-3} + \left(\color{blue}{15}\cdot 16^{-1} + 0.36\cdot 16^{-1}\right)\cdot 16^{-3} \qquad \fbox{$0.96 = \color{blue}{15}\cdot 16^{-1} + 0.36\cdot 16^{-1}$ で置き換えた} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \color{blue}{8}\cdot 16^{-3} + \color{blue}{15}\cdot 16^{-4} + 0.36\cdot 16^{-4} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \color{blue}{8}\cdot 16^{-3} + \color{blue}{15}\cdot 16^{-4} + \left(\color{blue}{5}\cdot 16^{-1} + \color{red}{0.76}\cdot 16^{-1}\right)\cdot 16^{-4} \qquad \fbox{$0.36 = \color{blue}{5}\cdot 16^{-1} + \color{red}{0.76}\cdot 16^{-1}$ で置き換えた} \\ &= \color{blue}{12}\cdot 16^{-1} + \color{blue}{2}\cdot 16^{-2} + \color{blue}{8}\cdot 16^{-3} + \color{blue}{15}\cdot 16^{-4} + \color{blue}{5}\cdot 16^{-5} + \color{red}{0.76}\cdot 16^{-5} \\ \end{align*}
結果、次のような $\color{red}{0.76}$ を表す式の中に $\color{red}{0.76}$ が入っている式が得られます。 このような自分の中に自分が入っている式が、無限に同じパターンを繰り返す循環節を生み出す元になります。
\begin{align*} \color{red}{0.76} = \color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5} \end{align*}
10進数の $0.11$ を16の累乗で展開した式は次のようになります。
\begin{align*} 0.11 &= 1\cdot 16^{-1} + \color{red}{0.76}\cdot 16^{-1} \\ &= 1\cdot 16^{-1} + \left(\color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}\right)\cdot 16^{-1} \qquad \fbox{$\color{red}{0.76} = \color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}$ で置き換えた} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{red}{0.76}\cdot 16^{-6} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \left(\color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}\right)\cdot 16^{-6} \qquad \fbox{$\color{red}{0.76} = \color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}$ で置き換えた} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{blue}{12\cdot 16^{-7} + 2\cdot 16^{-8} + 8\cdot 16^{-9} + 15\cdot 16^{-10} + 5\cdot 16^{-11}} + \color{red}{0.76}\cdot 16^{-11} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{blue}{12\cdot 16^{-7} + 2\cdot 16^{-8} + 8\cdot 16^{-9} + 15\cdot 16^{-10} + 5\cdot 16^{-11}} + \left(\color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}\right)\cdot 16^{-11} \qquad \fbox{$\color{red}{0.76} = \color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}$ で置き換えた} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{blue}{12\cdot 16^{-7} + 2\cdot 16^{-8} + 8\cdot 16^{-9} + 15\cdot 16^{-10} + 5\cdot 16^{-11}} + \color{blue}{12\cdot 16^{-12} + 2\cdot 16^{-13} + 8\cdot 16^{-14} + 15\cdot 16^{-15} + 5\cdot 16^{-16}} + \color{red}{0.76}\cdot 16^{-16} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{blue}{12\cdot 16^{-7} + 2\cdot 16^{-8} + 8\cdot 16^{-9} + 15\cdot 16^{-10} + 5\cdot 16^{-11}} + \color{blue}{12\cdot 16^{-12} + 2\cdot 16^{-13} + 8\cdot 16^{-14} + 15\cdot 16^{-15} + 5\cdot 16^{-16}} + \left(\color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}\right)\cdot 16^{-16} \qquad \fbox{$\color{red}{0.76} = \color{blue}{12\cdot 16^{-1} + 2\cdot 16^{-2} + 8\cdot 16^{-3} + 15\cdot 16^{-4} + 5\cdot 16^{-5}} + \color{red}{0.76}\cdot 16^{-5}$ で置き換えた} \\ &= 1\cdot 16^{-1} + \color{blue}{12\cdot 16^{-2} + 2\cdot 16^{-3} + 8\cdot 16^{-4} + 15\cdot 16^{-5} + 5\cdot 16^{-6}} + \color{blue}{12\cdot 16^{-7} + 2\cdot 16^{-8} + 8\cdot 16^{-9} + 15\cdot 16^{-10} + 5\cdot 16^{-11}} + \color{blue}{12\cdot 16^{-12} + 2\cdot 16^{-13} + 8\cdot 16^{-14} + 15\cdot 16^{-15} + 5\cdot 16^{-16}} + \color{blue}{12\cdot 16^{-17} + 2\cdot 16^{-18} + 8\cdot 16^{-19} + 15\cdot 16^{-20} + 5\cdot 16^{-21}} + \color{red}{0.76}\cdot 16^{-21} \\ &\vdots \qquad \fbox{同じ処理の繰り返しが無限に続く} \end{align*}

2進数から16進数への変換 16進数から2進数への変換
目次へ↑

2進法と16進法は非常に相性の良い基数になってます。 $2^4 = 16$ という関係があるので、2進法の4桁と16進法の1桁がばっちり一致します。 以下に10進数で0から15までの、2進数4桁と16進数1桁の対応表を示します。 この表では後の変換に便利なように、2進数の上位の空の桁を0で埋めて全て4桁で表しています。

10進数2進数16進数
000000
100011
200102
300113
401004
501015
601106
701117
810008
910019
101010a
111011b
121100c
131101d
141110e
151111f

例として「$\rm 5c6.e2$」という16進数を考えてみましょう。 小数点を基準に4桁ずつ対応表を見て置き換えるだけです。 計算は全く必要ありません。

\begin{align*} \mbox{(16進法)}\;\rm \color{red}{\vert}5\color{red}{\vert}c\color{red}{\vert}6\color{red}{\vert}.e\color{red}{\vert}2\color{red}{\vert} \leftrightarrow \color{red}{\vert}0101\color{red}{\vert}1100\color{red}{\vert}0110\color{red}{\vert}.1110\color{red}{\vert}0010\color{red}{\vert}\;\mbox{(2進法)} \\ \end{align*} \begin{align*} \mbox{(16進法)}\;\rm 5c6.e2 \leftrightarrow 10111000110.1110001\;\mbox{(2進法)} \end{align*}
ちなみにこの操作は10進法で見ると、以下の計算に対応します。
\begin{align*} & 5\cdot 16^2 + 12\cdot 16^1 + 6\cdot 16^0 + 14\cdot 16^{-1} + 2\cdot 16^{-2} \\ &= \left(0\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 1\cdot 2^0\right)\cdot \left(2^4\right)^2 + \left(1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^4\right)^1 + \left(0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^4\right)^0 + \left(1\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^4\right)^{-1} + \left(0\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^4\right)^{-2} \\ &= \left(0\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 1\cdot 2^0\right)\cdot 2^8 + \left(1\cdot 2^3 + 1\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^4 + \left(0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^0 + \left(1\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^{-4} + \left(0\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^{-8} \\ &= 0\cdot 2^{11} + 1\cdot 2^{10} + 0\cdot 2^9+ 1\cdot 2^8 + 1\cdot 2^7 + 1\cdot 2^6 + 0\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0\cdot 2^{-4} + 0\cdot 2^{-5} + 0\cdot 2^{-6} + 1\cdot 2^{-7} + 0\cdot 2^{-8} \\ &= 1\cdot 2^{10} + 0\cdot 2^9+ 1\cdot 2^8 + 1\cdot 2^7 + 1\cdot 2^6 + 0\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2} + 1\cdot 2^{-3} + 0\cdot 2^{-4} + 0\cdot 2^{-5} + 0\cdot 2^{-6} + 1\cdot 2^{-7} \end{align*}
$16=2^4$ が上手く働いてることが分かります。

8進数から10進数への変換
目次へ↑

8進法の各桁は8の累乗の束を表しています。 16進法の小数点付きの例として「$2706.704$」という8進数を考えてみましょう。

つまり「8進数の$2706.704$」と「10進数の$1478.8828125$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[8]進法の自然数に設定して、分子に[2706704]を、分母に[1000]を入力します。 上の分数を[10]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \mbox{(8進法)}\;2706.704 \rightarrow & 2\cdot 8^3 + 7\cdot 8^2 + 0\cdot 8^1 + 6\cdot 8^0 + 7\cdot 8^{-1} + 0\cdot 8^{-2} + 4\cdot 8^{-3}\;\mbox{(10進法)} \\ &= 2\cdot 512 + 7\cdot 64 + 0\cdot 8 + 6\cdot 1 + 7\cdot \frac{1}{8} + 0\cdot \frac{1}{64} + 4\cdot \frac{1}{512} \\ &= 2\cdot 512 + 7\cdot 64 + 0\cdot 8 + 6\cdot 1 + 7\cdot 0.125 + 0\cdot 0.015625 + 4\cdot 0.001953125 \\ &= 1024 + 448 + 0 + 6 + 0.875 + 0.0 + 0.0078125 \\ &= 1478.8828125 \\ \end{align*}
上記の右側の式は10進法であることに注意してください。 10進法の「$8$(ハチ)」は8進法では「$10$(イチ・ゼロ)」になります。 下式の上下の対応で、同じ数値を表現していることになります。
\begin{align*} \mbox{(8進法)}\;2706.704 &= 2\cdot 10^3 + 7\cdot 10^2 + 0\cdot 10^1 + 6\cdot 10^0 + 7\cdot 10^{-1} + 0\cdot 10^{-2} + 4\cdot 10^{-2} \\ &\updownarrow \\ \mbox{(10進法)}\;1478.8828125 &= 2\cdot 8^3 + 7\cdot 8^2 + 0\cdot 8^1 + 6\cdot 8^0 + 7\cdot 8^{-1} + 0\cdot 8^{-2} + 4\cdot 8^{-3} \\ \end{align*}

10進数から8進数への変換
目次へ↑

10進数自然数から8進数自然数への変換

8進法の自然数の各桁の値は、8で割った余りを順々に見ていけば分かります。 これを利用すれば10進法の自然数を8進法の自然数に変換することができます。 例として10進数の「$1478$」を8進数に変換してみましょう。

つまり「10進数の$1478$」と「8進数の$2706$」は同じ数値を表しているということになります。 計算した後、プログラマ電卓等で確かめてみると良いでしょう。 (こちら)のスクリプトでも確かめることができます。 分母分子を[8]進法の自然数に設定して、分子に[1478]を、分母に[1]を入力します。 [8]進法の分数に[変換]ボタンを押すと、確かめることができます。 上の分数を[8]進法の小数に[変換]ボタンを押しても、確かめることができます。
\begin{align*} \require{enclose} \begin{array}{rll} 8 )\!\enclose{bottom}{1478} & & \\[-3pt] 8 )\!\enclose{bottom}{\phantom{0}184} & \cdots 6 & \quad \rightarrow 8^0\mbox{の桁の値は}6 \\[-3pt] 8 )\!\enclose{bottom}{\phantom{00}23} & \cdots 0 & \quad \rightarrow 8^1\mbox{の桁の値は}0 \\[-3pt] 8 )\!\enclose{bottom}{\phantom{000}2} & \cdots 7 & \quad \rightarrow 8^2\mbox{の桁の値は}7 \\[-3pt] \phantom{8 )}\!\enclose{}{\phantom{000}0} & \cdots 2 & \quad \rightarrow 8^3\mbox{の桁の値は}2 \\[-3pt] \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;\rm 1478 \rightarrow 2706\;\mbox{(8進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rl} 1478 &= 184\cdot 8 + 6 \\ 184 &= 23\cdot 8 + 0 \\ 23 &= 2\cdot 8 + 7 \\ \end{array} \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を8の累乗で展開した式が得られるわけです。
\begin{align*} 1478 &= 184\cdot 8 + 6 \\ &= \left(23\cdot 8 + 0\right)\cdot 8 + 6 \qquad \fbox{$184 = 23\cdot 8 + 6$ で置き換えた} \\ &= 23\cdot 8^2 + 0\cdot 8 + 6 \\ &= \left(2\cdot 8 + 7\right)\cdot 8^2 + 0\cdot 8 + 6 \qquad \fbox{$23 = 2\cdot 8 + 7$ で置き換えた} \\ &= 2\cdot 8^3 + 7\cdot 8^2 + 0\cdot 8 + 6 \\ &= 2\cdot 8^3 + 7\cdot 8^2 + 0\cdot 8^1 + 6\cdot 8^0 \\ \end{align*}

10進数純小数から8進数純小数への変換

8進法の純小数の各桁の値は、8を掛けた時の整数部を順々に見ていけば分かります。 これを利用して10進法の純小数を8進法の純小数に変換することができます。 例として10進数の「$0.8828125$」を8進数に変換してみましょう。

つまり「10進数の$0.8828125$」と「8進数の$0.704$」は同じ数値を表しているということになります。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[8828125]を、分母に[10000000]を入力します。 上の分数を[8]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rlll} 0.8828125\times 8 &= 7.0625 &= 7 + 0.0625 &\rightarrow 8^{-1}\mbox{の桁の値は}7 \\ 0.0625\times 8 &= 0.5 &= 0 + 0.5 &\rightarrow 8^{-2}\mbox{の桁の値は}0 \\ 0.5\times 8 &= 4.0 &= 4 + 0.0 &\rightarrow 8^{-3}\mbox{の桁の値は}4 \\ \end{array} \end{align*} \begin{align*} \mbox{(10進法)}\;\rm 0.8828125 \rightarrow 0.704\;\mbox{(8進法)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.8828125 &= 0.8828125\cdot 8\cdot 8^{-1} &= \left(7 + 0.0625\right)\cdot 8^{-1} &= 7\cdot 8^{-1} + 0.0625\cdot 8^{-1} \\ 0.0625 &= 0.0625\cdot 8\cdot 8^{-1} &= \left(0 + 0.5\right)\cdot 8^{-1} &= 0\cdot 8^{-1} + 0.5\cdot 8^{-1} \\ 0.5 &= 0.5\cdot 8\cdot 8^{-1} &= 4\cdot 8^{-1} & \\ \end{array} \end{align*}
これらの式をどんどん組み合わせていくと、以下のように10進数を8の累乗で展開した式が得られるわけです。
\begin{align*} 0.8828125 &= 7\cdot 8^{-1} + 0.0625\cdot 8^{-1} \\ &= 7\cdot 8^{-1} + \left(0\cdot 8^{-1} + 0.5\cdot 8^{-1}\right)\cdot 8^{-1} \qquad \fbox{$0.0625 = 0\cdot 8^{-1} + 0.5\cdot 8^{-1}$ で置き換えた} \\ &= 7\cdot 8^{-1} + 0\cdot 8^{-2} + 0.5\cdot 8^{-2} \\ &= 7\cdot 8^{-1} + 0\cdot 8^{-2} + 4\cdot 8^{-1}\cdot 8^{-2} \qquad \fbox{$0.5 = 4\cdot 8^{-1}$ で置き換えた} \\ &= 7\cdot 8^{-1} + 0\cdot 8^{-2} + 4\cdot 8^{-3} \\ \end{align*}

10進数純小数から8進数小数(循環小数)への変換

次の例として10進数の「$0.1$」を8進数に変換してみましょう。 これは循環小数の8進数になる例です。

つまり「10進数の$0.1$」と「8進数の循環小数$0.0\dot{6}31\dot{4}$」は同じ数値を表しているということになります。ドットがついた数値の間の $6314$ のパターンを無限に繰り返す循環小数です。 計算した後、(こちら)のスクリプトで確かめてみると良いでしょう。 分母分子を[10]進法の自然数に設定して、分子に[1]を、分母に[10]を入力します。 上の分数を[8]進法の小数に[変換]ボタンを押すと、確かめることができます。
\begin{align*} \begin{array}{rlll} 0.1\times 8 &= 0.8 &= 0 + \color{red}{0.8} &\rightarrow 8^{-1}\mbox{の桁の値は}0 \\ \color{red}{0.8}\times 8 &= 6.4 &= \color{blue}{6} + 0.4 &\rightarrow 8^{-2}\mbox{の桁の値は}\color{blue}{6} \\ 0.4\times 8 &= 3.2 &= \color{blue}{3} + 0.2 &\rightarrow 8^{-3}\mbox{の桁の値は}\color{blue}{3} \\ 0.2\times 8 &= 1.6 &= \color{blue}{1} + 0.6 &\rightarrow 8^{-4}\mbox{の桁の値は}\color{blue}{1} \\ 0.6\times 8 &= 4.8 &= \color{blue}{4} + \color{red}{0.8} &\rightarrow 8^{-5}\mbox{の桁の値は}\color{blue}{4} \\ \end{array} \end{align*} \begin{align*} \mbox{(10進法の有限小数)}\;\rm 0.1 \rightarrow 0.0\,\color{blue}{6314}\,\color{blue}{6314}\,\color{blue}{6314}\,\color{blue}{6314}\color{blue}{\cdots}\;\mbox{(8進法の循環小数)} \end{align*}
ちなみに上記の計算の各段階で、以下の式が得られます。
\begin{align*} \begin{array}{rlll} 0.1 &= 0.1\cdot 8\cdot 8^{-1} &= \left(0 + \color{red}{0.8}\right)\cdot 8^{-1} &= 0\cdot 8^{-1} + \color{red}{0.8}\cdot 8^{-1} \\ \color{red}{0.8} &= 0.8\cdot 8\cdot 8^{-1} &= \left(\color{blue}{6} + 0.4\right)\cdot 8^{-1} &= \color{blue}{6}\cdot 8^{-1} + 0.4\cdot 8^{-1} \\ 0.4 &= 0.4\cdot 8\cdot 8^{-1} &= \left(\color{blue}{3} + 0.2\right)\cdot 8^{-1} &= \color{blue}{3}\cdot 8^{-1} + 0.2\cdot 8^{-1} \\ 0.2 &= 0.2\cdot 8\cdot 8^{-1} &= \left(\color{blue}{1} + 0.6\right)\cdot 8^{-1} &= \color{blue}{1}\cdot 8^{-1} + 0.6\cdot 8^{-1} \\ 0.6 &= 0.6\cdot 8\cdot 8^{-1} &= \left(\color{blue}{4} + \color{red}{0.8}\right)\cdot 8^{-1} &= \color{blue}{4}\cdot 8^{-1} + \color{red}{0.8}\cdot 8^{-1} \\ \end{array} \end{align*}
これらの式を組み合わせていきます。 まずは $\color{red}{0.8}$ に注目します。
\begin{align*} \color{red}{0.8} &= \color{blue}{6}\cdot 8^{-1} + 0.4\cdot 8^{-1} \\ &= \color{blue}{6}\cdot 8^{-1} + \left(\color{blue}{3}\cdot 8^{-1} + 0.2\cdot 8^{-1}\right)\cdot 8^{-1} \qquad \fbox{$0.4 = \color{blue}{3}\cdot 8^{-1} + 0.2\cdot 8^{-1}$ で置き換えた} \\ &= \color{blue}{6}\cdot 8^{-1} + \color{blue}{3}\cdot 8^{-2} + 0.2\cdot 8^{-2} \\ &= \color{blue}{6}\cdot 8^{-1} + \color{blue}{3}\cdot 8^{-2} + \left(\color{blue}{1}\cdot 8^{-1} + 0.6\cdot 8^{-1}\right)\cdot 8^{-2} \qquad \fbox{$0.2 = \color{blue}{1}\cdot 8^{-1} + 0.6\cdot 8^{-1}$ で置き換えた} \\ &= \color{blue}{6}\cdot 8^{-1} + \color{blue}{3}\cdot 8^{-2} + \color{blue}{1}\cdot 8^{-3} + 0.6\cdot 8^{-3} \\ &= \color{blue}{6}\cdot 8^{-1} + \color{blue}{3}\cdot 8^{-2} + \color{blue}{1}\cdot 8^{-3} + \left(\color{blue}{4}\cdot 8^{-1} + \color{red}{0.8}\cdot 8^{-1}\right)\cdot 8^{-3} \qquad \fbox{$0.6 = \color{blue}{4}\cdot 8^{-1} + \color{red}{0.8}\cdot 8^{-1}$ で置き換えた} \\ &= \color{blue}{6}\cdot 8^{-1} + \color{blue}{3}\cdot 8^{-2} + \color{blue}{1}\cdot 8^{-3} + \color{blue}{4}\cdot 8^{-4} + \color{red}{0.8}\cdot 8^{-4} \\ \end{align*}
結果、次のような $\color{red}{0.8}$ を表す式の中に $\color{red}{0.8}$ が入っている式が得られます。 このような自分の中に自分が入っている式が、無限に同じパターンを繰り返す循環節を生み出す元になります。
\begin{align*} \color{red}{0.8} = \color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4} \end{align*}
10進数の $0.1$ を8の累乗で展開した式は次のようになります。
\begin{align*} 0.1 &= 0\cdot 8^{-1} + \color{red}{0.8}\cdot 8^{-1} \\ &= 0\cdot 8^{-1} + \left(\color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}\right)\cdot 8^{-1} \qquad \fbox{$\color{red}{0.8} = \color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}$ で置き換えた} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{red}{0.8}\cdot 8^{-5} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \left(\color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}\right)\cdot 8^{-5} \qquad \fbox{$\color{red}{0.8} = \color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}$ で置き換えた} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{blue}{6\cdot 8^{-6} + 3\cdot 8^{-7} + 1\cdot 8^{-8} + 4\cdot 8^{-9}} + \color{red}{0.8}\cdot 8^{-9} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{blue}{6\cdot 8^{-6} + 3\cdot 8^{-7} + 1\cdot 8^{-8} + 4\cdot 8^{-9}} + \left(\color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}\right)\cdot 8^{-9} \qquad \fbox{$\color{red}{0.8} = \color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}$ で置き換えた} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{blue}{6\cdot 8^{-6} + 3\cdot 8^{-7} + 1\cdot 8^{-8} + 4\cdot 8^{-9}} + \color{blue}{6\cdot 8^{-10} + 3\cdot 8^{-11} + 1\cdot 8^{-12} + 4\cdot 8^{-13}} + \color{red}{0.8}\cdot 8^{-13} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{blue}{6\cdot 8^{-6} + 3\cdot 8^{-7} + 1\cdot 8^{-8} + 4\cdot 8^{-9}} + \color{blue}{6\cdot 8^{-10} + 3\cdot 8^{-11} + 1\cdot 8^{-12} + 4\cdot 8^{-13}} + \left(\color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}\right)\cdot 8^{-13} \qquad \fbox{$\color{red}{0.8} = \color{blue}{6\cdot 8^{-1} + 3\cdot 8^{-2} + 1\cdot 8^{-3} + 4\cdot 8^{-4}} + \color{red}{0.8}\cdot 8^{-4}$ で置き換えた} \\ &= 0\cdot 8^{-1} + \color{blue}{6\cdot 8^{-2} + 3\cdot 8^{-3} + 1\cdot 8^{-4} + 4\cdot 8^{-5}} + \color{blue}{6\cdot 8^{-6} + 3\cdot 8^{-7} + 1\cdot 8^{-8} + 4\cdot 8^{-9}} + \color{blue}{6\cdot 8^{-10} + 3\cdot 8^{-11} + 1\cdot 8^{-12} + 4\cdot 8^{-13}} + \color{blue}{6\cdot 8^{-14} + 3\cdot 8^{-15} + 1\cdot 8^{-16} + 4\cdot 8^{-17}} + \color{red}{0.8}\cdot 8^{-17} \\ &\vdots \qquad \fbox{同じ処理の繰り返しが無限に続く} \end{align*}

2進数から8進数への変換 8進数から2進数への変換
目次へ↑

2進法と8進法は非常に相性の良い基数になってます。 $2^3 = 8$ という関係があるので、2進法の3桁と8進法の1桁がばっちり一致します。 以下に10進数で0から7までの、2進数3桁と8進数1桁の対応表を示します。 この表では後の変換に便利なように、2進数の上位の空の桁を0で埋めて全て3桁で表しています。

10進数2進数8進数
00000
10011
20102
30113
41004
51015
61106
71117

例として「$2706.704$」という8進数を考えてみましょう。 小数点を基準に3桁ずつ対応表を見て置き換えるだけです。 計算は全く必要ありません。

\begin{align*} \mbox{(8進法)}\;\color{red}{\vert}2\color{red}{\vert}7\color{red}{\vert}0\color{red}{\vert}6\color{red}{\vert}.7\color{red}{\vert}0\color{red}{\vert}4\color{red}{\vert} \leftrightarrow \color{red}{\vert}010\color{red}{\vert}111\color{red}{\vert}000\color{red}{\vert}110\color{red}{\vert}.111\color{red}{\vert}000\color{red}{\vert}100\color{red}{\vert}\;\mbox{(2進法)} \\ \end{align*} \begin{align*} \mbox{(8進法)}\;\rm 2706.704 \leftrightarrow 10111000110.1110001\;\mbox{(2進法)} \end{align*}
ちなみにこの操作は10進法で見ると、以下の計算に対応します。
\begin{align*} & 2\cdot 8^3 + 7\cdot 8^2 + 0\cdot 8^1 + 6\cdot 8^0 + 7\cdot 8^{-1} + 0\cdot 8^{-2} + 4\cdot 8^{-3} \\ &= \left(0\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^3\right)^3 + \left(1\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0\right)\cdot \left(2^3\right)^2 + \left(0\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^3\right)^1 + \left(1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^3\right)^0 + \left(1\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0\right)\cdot \left(2^3\right)^{-1} + \left(0\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^3\right)^{-2} + \left(1\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot \left(2^3\right)^{-3} \\ &= \left(0\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^9 + \left(1\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0\right)\cdot 2^6 + \left(0\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^3 + \left(1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^0 + \left(1\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0\right)\cdot 2^{-3} + \left(0\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^{-6} + \left(1\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0\right)\cdot 2^{-9} \\ &= 0\cdot 2^{11} + 1\cdot 2^{10} + 0\cdot 2^9 + 1\cdot 2^8 + 1\cdot 2^7 + 1\cdot 2^6 + 0\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2}1 + 1\cdot 2^{-3} + 0\cdot 2^{-4}2 + 0\cdot 2^{-5} + 0\cdot 2^{-6} + 1\cdot 2^{-7} + 0\cdot 2^{-8} + 0\cdot 2^{-9} \\ &= 1\cdot 2^{10} + 0\cdot 2^9 + 1\cdot 2^8 + 1\cdot 2^7 + 1\cdot 2^6 + 0\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2}1 + 1\cdot 2^{-3} + 0\cdot 2^{-4}2 + 0\cdot 2^{-5} + 0\cdot 2^{-6} + 1\cdot 2^{-7} \end{align*}
$8=2^3$ が上手く働いてることが分かります。

まとめ
目次へ↑

2,8,16進法→10進法は位取りの桁のシステムが分かっていれば簡単です。 逆は「割り算・掛け算」が少し大変になってきます。 2進法では計算は簡単ですが、計算回数が多くなって間違えやすくなります。 16進法は「10進法の2桁の掛け算や割り算」が出てきて少し大変になります。 日本人は小学校2年の時に、九九を丸暗記して身に着けているので、8進法の計算では七七が使えます。 以下の順番で変換すれば間違えにくく、時間もかからないと思います。

10進法 ↔ 8進法 ↔ 2進法 ↔ 16進法
2桁の割り算が苦手ではない人は 10進法 ↔ 16進法  の計算を実行すれば、一度に多くの桁に対応する数値が処理できるので速いと思います。 暗記が得意な人は九九の表の代わりに十六十六までの足し算や掛け算の表を暗記するとむちゃくちゃ速く変換できるようになるはずです。 以下、表を掲載します。 暗記する気になれない人は、その都度筆算するか、8進法を経由するのが良いと思われます。

以下は足し算の表です。

+012345678910111213141516
0012345678910111213141516
11234567891011121314151617
223456789101112131415161718
3345678910111213141516171819
44567891011121314151617181920
556789101112131415161718192021
6678910111213141516171819202122
77891011121314151617181920212223
889101112131415161718192021222324
9910111213141516171819202122232425
101011121314151617181920212223242526
111112131415161718192021222324252627
121213141516171819202122232425262728
131314151617181920212223242526272829
141415161718192021222324252627282930
151516171819202122232425262728293031
161617181920212223242526272829303132

以下は掛け算の表です。

×012345678910111213141516
000000000000000000
1012345678910111213141516
202468101214161820222426283032
3036912151821242730333639424548
40481216202428323640444852566064
505101520253035404550556065707580
606121824303642485460667278849096
70714212835424956637077849198105112
8081624324048566472808896104112120128
90918273645546372819099108117126135144
100102030405060708090100110120130140150160
110112233445566778899110121132143154165176
1201224364860728496108120132144156168180192
13013263952657891104117130143156169182195208
14014284256708498112126140154168182196210224
150153045607590105120135150165180195210225240
160163248648096112128144160176192208224240256
表を作ってみましたが、足し算は何とかなりそうですが、掛け算の方の暗記はちょっときつそうですね。

ここまで、ある1つの注目した数に関して、基数変換で様々な位取り法で表現する方法を学んできました。 次の応用として、2進法での2つの数の四則演算、8進法での2つの数の四則演算、16進法での2つの数の四則演算があります。 10進法ではどのように身につけていったのか? 小学校6年かけて身につけたことを思い出してください。 1桁の足し算・引き算をやって次に筆算で複数桁の足し算・引き算、桁上がり桁下がりを身につけました。 更に1桁の掛け算である九九を覚えて複数桁の掛け算・割り算へと進んでいきます。 以下に基本になる1桁の足し算・掛け算の計算表を掲載します。 これを元に、足し算・掛け算の結合法則・交換法則・分配法則を用いて筆算を組み立て、実行していくことになります。

2進法の計算表

2進数と2進数の計算では2進法の桁上がりルールに従わなければなりません。 そのため、2進法での1桁の足し算と掛け算の表を作っておくと筆算に便利です。

以下は足し算の計算表です。数値は全て10進法の時と同じで表現が違うだけです。

+0110
00110
111011
101011100

以下は掛け算の計算表です。数値は全て10進法の時と同じで表現が違うだけです。

×0110
0000
10110
10010100

桁上がりにさえ気を付ければ、覚えなければならないことは殆どありません。 表を作らなくても良いくらいです。 2進法では桁数が大きくなりがちなのが難点ですが、簡単なルールを組み合わせて計算できます。 機械的な計算に2進法は最適です。 2進法での計算例が(こちら)のリンク先にありますので、参考にしてください。

8進法の計算表

以下は足し算の表です。数値は全て10進法の時と同じで表現が違うだけです。

+0123456710
00123456710
112345671011
2234567101112
33456710111213
445671011121314
5567101112131415
66710111213141516
771011121314151617
10101112131415161720

以下は掛け算の表です。数値は全て10進法の時と同じで表現が違うだけです。

×0123456710
0000000000
10123456710
202461012141620
3036111417222530
40410142024303440
50512172431364350
60614223036445260
70716253443526170
10010203040506070100

掛け算の方は10進法の九九の知識が邪魔をして混乱するために覚えにくそうです。 実際に計算する時は表を見ながら計算すると良いでしょう。 現実的には8進法で計算するメリットは殆どありません。 10進法か2進法、相性を考えると2進法に変換してから計算して、8進法に戻すと良いですね。

16進法の計算表

以下は足し算の表です。数値は全て10進法の時と同じで表現が違うだけです。

+0123456789abcdef10
00123456789abcdef10
1123456789abcdef1011
223456789abcdef101112
33456789abcdef10111213
4456789abcdef1011121314
556789abcdef101112131415
66789abcdef10111213141516
7789abcdef1011121314151617
889abcdef101112131415161718
99abcdef10111213141516171819
aabcdef101112131415161718191a
bbcdef101112131415161718191a1b
ccdef101112131415161718191a1b1c
ddef101112131415161718191a1b1c1d
eef101112131415161718191a1b1c1d1e
ff101112131415161718191a1b1c1d1e1f
10101112131415161718191a1b1c1d1e1f20

以下は掛け算の表です。数値は全て10進法の時と同じで表現が違うだけです。

×0123456789abcdef10
000000000000000000
10123456789abcdef10
202468ace10121416181a1c1e20
30369cf1215181b1e2124272a2d30
4048c1014181c2024282c3034383c40
505af14191e23282d32373c41464b50
606c12181e242a30363c42484e545a60
707e151c232a31383f464d545b626970
808101820283038404850586068707880
909121b242d363f48515a636c757e8790
a0a141e28323c46505a646e78828c96a0
b0b16212c37424d58636e79848f9aa5b0
c0c1824303c4854606c7884909ca8b4c0
d0d1a2734414e5b6875828f9ca9b6c3d0
e0e1c2a38465462707e8c9aa8b6c4d2e0
f0f1e2d3c4b5a69788796a5b4c3d2e1f0
100102030405060708090a0b0c0d0e0f0100

これを暗記するのは大変です。 両手で指が10本しかなくて良かったですね。 こちらの場合も暗記ではなく、必要になったら表を見ながら計算すると良いでしょう。 16進法で計算するメリットも殆どありませんので、2進法に変換してから計算して、16進法に戻すと良いですね。

最後に
目次へ↑

最後に、ある一つの数値を様々な位取り法で見てみましょう。 以下の数値は表現が違うだけで、全て同じ数値を表しています。 上の計算表を利用して、各々の位取り法での桁上がりを慎重に計算すると、横の並びが全て同じ数を表していることが確認できます。 (混乱してしまう場合は無理に確かめる必要はありません。縦の並びを比較して、納得してください。)

\begin{align*} \begin{array}{crlll} &&\phantom{=}\mbox{2の累乗の展開式}&\phantom{=}\mbox{8の累乗の展開式}&\phantom{=}\mbox{10の累乗の展開式}&\phantom{=}\mbox{16の累乗の展開式}\\ \mbox{(2進法)} & 101011.11 &= 1\cdot 10^{101} + 0\cdot 10^{100} + 1\cdot 10^{11} + 0\cdot 10^{10} + 1\cdot 10^1 + 1\cdot 10^0 + 1\cdot 10^{-1} + 1\cdot 10^{-10} &= 101\cdot 1000^1 + 11\cdot 1000^0 + 110\cdot 1000^{-1} &= 100\cdot 1010^1 + 11\cdot 1010^0 + 111\cdot 1010^{-1} + 101\cdot 1010^{-2} &= 10\cdot 10000^1 + 1011\cdot 10000^0 + 1100\cdot 10000^{-1} \\ \mbox{(8進法)} & 53.6 &= 1\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2} &= 5\cdot 10^1 + 3\cdot 10^0 + 6\cdot 10^{-1} &= 4\cdot 12^1 + 3\cdot 12^0 + 7\cdot 12^{-1} + 5\cdot 12^{-2} &= 2\cdot 20^1 + 13\cdot 20^0 + 14\cdot 20^{-1} \\ \mbox{(10進法)} & 43.75 &= 1\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2} &= 5\cdot 8^1 + 3\cdot 8^0 + 6\cdot 8^{-1} &= 4\cdot 10^1 + 3\cdot 10^0 + 7\cdot 10^{-1} + 5\cdot 10^{-2} &= 2\cdot 16^1 + 11\cdot 16^0 + 12\cdot 16^{-1} \\ \mbox{(16進法)} & \rm 2b.c &= 1\cdot 2^5 + 0\cdot 2^4 + 1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0 + 1\cdot 2^{-1} + 1\cdot 2^{-2} &= 5\cdot 8^1 + 3\cdot 8^0 + 6\cdot 8^{-1} &= \rm 4\cdot a^1 + 3\cdot a^0 + 7\cdot a^{-1} + 5\cdot a^{-2} &= \rm 2\cdot 10^1 + b\cdot 10^0 + c\cdot 10^{-1} \\ \end{array} \end{align*}


(藤本の担当講義に戻る)    (Tipsに戻る)