talosのプログラミング教室

【基本・応用情報技術者】基数変換(2進数/8進数/16進数/n進数から10進数への変換)

スポンサーリンク

こんにちは。たろすです。

今回は基数変換(2進数/8進数/16進数/n進数から10進数への変換)について説明します。

n進数 ⇒ 10進数

n進数から10進数に変換する方法です。

 (3827.56)_n = 3 * n^3 + 8 * n^2 + 2 * n^1 + 7 * n^0 + 5 * n^{-1} + 6 * n^{-2}

まず注目すべきは1の位の「7」です。

「7」に n^0を掛けます。

続いて十の位の「2」に注目します。

「2」に n^1を掛けます。

次の「8」には n^2、さらに次の「3」には n^3を掛けます。

続いて小数点以下について計算します。

小数点第一位の「5」に n^{-1}を、小数点第二位の「6」に n^{-2}を掛けます。

今まで計算したものをすべて足すと答えになります。

まとめると、


n進数 ⇒ 10進数

1. 一の位に n^0を掛ける
2. 一の位を中心に
 ・桁が一つ大きくなるたびに指数を1大きくした数を掛ける
 ・桁が一つ小さくなるたびに指数を1小さくした数を掛ける
3. すべての積を足す

それでは実際に計算してみましょう。

2進数 ⇒ 10進数

 \begin{eqnarray}
(1101.01)_2 &=& 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 + 0 * 2^{-1} + 1 * 2^{-2} \\
&=& 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 + 0 * 0.5 + 1 * 0.25 \\
&=& 8 + 4 + 0 + 1 + 0 + 0.25 \\
&=& 13.25
\end{eqnarray}

8進数 ⇒ 10進数

 \begin{eqnarray}
(175)_8 &=& 1 * 8^2 + 7 * 8^1 + 5 * 8^0 \\
&=& 1 * 64 + 7 * 8 + 5 * 1 \\
&=& 64 + 56 + 5 \\
&=& 125
\end{eqnarray}

16進数 ⇒ 10進数

 \begin{eqnarray}
(2A)_16 &=&  2 * 16^1 + 10 * 16^0 \\
&=& 2 * 16 + 10 * 1 \\
&=& 32 + 10 \\
&=& 42
\end{eqnarray}

※ 16進数ではA⇔10、B⇔11、C⇔12、D⇔13、E⇔14、F⇔15と対応しています。併せて覚えておきましょう。

おわりに

今回はn進数から10進数への変換を説明しました。

基本情報技術者試験応用情報技術者試験ではよく問われるのでしっかり覚えておきましょう。

10進数から2進数/8進数/16進数への変換についてはこちらで説明しているので、よかったらこちらも読んでみてください。

talosta.hatenablog.com