10進数から8進数への変換(小数点を含む数)

論理回路 logic

具体的な例として、10進数の\( 199.390625_{10} \)を8進数に変換します。整数部と小数部を別々に変換し、2つの結果を結合します。

基数を明確にするために、数値の最後に下付き文字で基数を付加します。例えば、10進数の1という数値は\( 1_{10} \)と表記します。2進数の1という数値は\( 1_{2} \)と表記します。16進数の1という数値は\( 1_{16} \)と表記します。

整数部

図1のように、元の10進数の整数部を変換先の基数8で割り、その商が0になるまで8で商を繰り返し割ります。割り算の余りを順に並べると、10進数の\( 199_{10} \)は、8進数の\( 307_{8} \)に対応することがわかります。

10進数から8進数への変換(整数部)
図1: 10進数から8進数への変換(整数部)

小数部

図2のように、元の10進数の小数部に変換先の基数8を掛け、その結果の小数部分が0になるまで8の掛け算を繰り返します。掛け算結果の整数部を順に並べると、10進数の\( .390625_{10} \)は、8進数の\( .31_{8} \)に対応することがわかります。

10進数から8進数への変換(小数部)
図2: 10進数から8進数への変換(小数部)

整数部と小数部の変換結果の結合

整数部と小数部の変換結果から、10進数の\( 199.390625_{10} \)は、8進数の\( 307.31_{8} \)に対応することがわかります。

検算

8進数\( 307.31_{8} \)を10進数に変換して、結果が\(199.390625_{10} \)になるか確認します。

\begin{equation}
\begin{split}
$307.31_{8}
&= 3_{8} \times 8^2 + 0_{8} \times 8^1 + 7_{8} \times 8^{0} + \\
&3_{8} \times 8^{-1} + 1_{8} \times 8^{-2}\\
&= 3_{10} \times 64_{10} + 0_{10} \times 8 + 7_{10} \times 1_{10} + \\
&3_{10} \times \frac{1}{8} + 1_{10} \times \frac{1}{64}\\
&= 192_{10} + 0_{10} + 7_{10} + 0.375_{10} + 0.015625_{10}\\
&= 199.390625_{10}\\
\end{split}
\end{equation}

タイトルとURLをコピーしました