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

logic

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

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

整数部

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

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

小数部

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

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

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

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

検算

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

\begin{equation}
\begin{split}
2F3.8_{16}
&= 2_{16} \times 16^2_{10} + F_{16} \times 16^1_{10} + 3_{16} \times 16^0_{10} + 8_{16} \times 16^{-1}_{10}\\
&= 2_{10} \times 16^2_{10} + 15_{10} \times 16^1_{10} + 3_{10} \times 16^0_{10} + 8_{10} \times 16^{-1}_{10}\\
&= 2_{10} \times 256_{10} + 15_{10} \times 16{10} + 3_{10} \times 1_{10} + 8_{10} \times \frac{1}{16}_{10}\\
&= 512_{10} + 240_{10} + 3_{10} + 0.5_{10}\\
&= 755.5_{10}
\end{split}
\end{equation}

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