第2回 2進数と基数変換 (2)

オンデマンド受講する場合は、必ず連絡の動画を見てから今回の内容に進んでください。

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

概要

動画の解説を参照

\((205.8125)_{10}\) という10進数に対応する2進数は、整数部分と小数部分に分けて求められます。
まず、元の10進数の整数部分 205 を 2 で割って右に商・余りを書きます。
次の行では商の値をもとに同じことを行います。
これを商が0になるまで繰り返します。
計算(省略可) 余り
205/2 102 1
102/2 51 0
51/2 25 1
25/2 12 1
12/2 6 0
6/2 3 0
3/2 1 1
1/2 0 1
表の余りの列を下から順に並べた \((11001101)_2\) が整数部分を2進数にしたものです。
(逆に変換して検算すれば、128 + 64 + 8 + 4 + 1 = 205 で確かに元の10進数に等しいことがわかります)

小数部分を求めるときも似たような手順です。
まず、元の10進数の小数部分 0.8125 に 2 をかけて、右に計算結果の小数部分と整数部分を書き出します。
次の行では小数部分の値をもとに同じことを行います。
これを小数部分が0になるまで繰り返します。
計算(省略可) 小数部分 整数部分
0.8125\(\times\)2 0.625 1
0.625\(\times\)2 0.25 1
0.25\(\times\)2 0.5 0
0.5\(\times\)2 0 1
表の整数部分の列を上から順に並べた \((0.1101)_2\) が小数部分を2進数にしたものです。
(逆に変換して検算すれば、これは1/2 + 1/4 + 1/16 = 0.5 + 0.25 + 0.0625 = 0.8125で確かに元の10進数に等しいことがわかります)

このようにして求めた整数部分と小数部分を合わせて
\((205.8125)_{10} = (11001101.1101)_2\)
となります。

課題1

※ 準備 : 学籍番号を入れて「入力」をクリック (タップ) してください。


\((\)
\()_{10}\)
を2進数に変換してください。計算過程も書いてください。

課題1ヒント

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

概要

動画の解説を参照

10進数を8進数にする手順も、基本的に10進数から2進数への変換と同じで、割る数・かける数が2から8に変わるだけです。

変換前の10進数を前項と同じ \((205.8125)_{10}\) として考えてみましょう。
まず元の10進数の整数部分 205 を 8で割って右に商・余りを書きます。
次の行では商の値をもとに同じことを行います。
これを商が0になるまで繰り返します。
計算(省略可) 余り
205/8 25 5
25/8 3 1
3/8 0 3
表の余りの列を下から順に並べた \((315)_8\) が整数部分を8進数にしたものです。
(逆に変換して検算すれば、これは 3 × 64 + 1 × 8 + 5 = 192 + 8 + 5 = 205 で確かに元の10進数に等しいことがわかります)

小数部分を求めるときも似たような手順です。
まず、元の10進数の小数部分 0.8125 に 8 をかけて、右に計算結果の小数部分と整数部分を書き出します。
次の行では小数部分の値をもとに同じことを行います。
これを小数部分がなくなるまで繰り返します。
計算(省略可) 小数部分 整数部分
0.8125\(\times\)8 0.5 6
0.5\(\times\)8 0 4
表の整数部分の列を上から順に並べた \((0.64)_8\) が小数部分を8進数にしたものです。
(逆に変換して検算すれば、これは6/8 + 4/64 = 0.75 + 0.0625 = 0.8125で確かに元の10進数に等しいことがわかります)

このようにして求めた整数部分と小数部分を合わせて
\((205.8125)_{10} = (315.64)_8\)
となります。

課題2

\((\)
\()_{10}\)
を8進数に変換してください。計算過程も書いてください。

課題2ヒント

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

概要

動画の解説を参照

10進数を16進数にする手順も同様で、割る数・かける数が16に変わるだけです。

変換前の10進数を \((158.7578125)_{10}\) として考えてみましょう。
まず、元の10進数の整数部分 158 を 16で割って右に商・余り・余りを16進表記にしたものを書きます。
次の行では商の値をもとに同じことを行います。
これを商が0になるまで繰り返します。
計算(省略可) 余り 16進表記
158/16 9 14 E
9/16 0 9 9
16進表記の列を下から順に並べた (9E)\(_{16}\) が整数部分を16進数にしたものです。
(逆に変換して検算すれば、これは 9 × 16 + 14 = 144 + 14 = 158 で確かに元の10進数に等しいことがわかります)

小数部分を求めるときも似たような手順です。 まず、元の10進数の小数部分 0.7578125 に 16 をかけて右に計算結果の小数部分・整数部分・余りを16進表記にしたものを書き出します。
次の行では小数部分の値をもとに同じことを行います。
これを小数部分がなくなるまで繰り返します。
計算(省略可) 小数部分 整数部分 16進表記
0.7578125\(\times\)16 0.125 12 C
0.125\(\times\)16 0 2 2
16進表記の列を上から順に並べた (0.C2)\(_{16}\) 小数部分を16進数にしたものです。
(逆に変換して検算すれば、これは12/16 + 2/256 = 0.75 + 0.0078125 = 0.7578125で確かに元の10進数に等しいことがわかります)

このようにして求めた整数部分と小数部分を合わせて
\((158.7578125)_{10} =\) (9E.C2)\(_{16}\)
となります。

課題3

\((\)
\()_{10}\)
を16進数に変換してください。計算過程も書いてください。

課題3ヒント

補足

動画の解説を参照

\(2^3=8\) なので、1桁の8進数は3桁の2進数に対応します。
8進数 2進数
\((0)_8\) \((000)_2\)
\((1)_8\) \((001)_2\)
\((2)_8\) \((010)_2\)
\((3)_8\) \((011)_2\)
\((4)_8\) \((100)_2\)
\((5)_8\) \((101)_2\)
\((6)_8\) \((110)_2\)
\((7)_8\) \((111)_2\)
そのため、桁ごとに置き換えるだけで2進数↔8進数の変換ができます。例えば

\((11001101.1101)_2\)
という2進数の整数部分を「011」「001」「101」、小数部分を「110」「100」のように小数点を基準に3桁ずつ区切って表の8進数に置き換えれば、

\((11001101.1101)_2 = (315.64)_8\)
となります。

同様に、 \(2^4=16\) なので1桁の16進数は4桁の2進数に対応します。
16進数 2進数
(0)\(_{16}\) \((0000)_2\)
(1)\(_{16}\) \((0001)_2\)
(2)\(_{16}\) \((0010)_2\)
(3)\(_{16}\) \((0011)_2\)
(4)\(_{16}\) \((0100)_2\)
(5)\(_{16}\) \((0101)_2\)
(6)\(_{16}\) \((0110)_2\)
(7)\(_{16}\) \((0111)_2\)
(8)\(_{16}\) \((1000)_2\)
(9)\(_{16}\) \((1001)_2\)
(A)\(_{16}\) \((1010)_2\)
(B)\(_{16}\) \((1011)_2\)
(C)\(_{16}\) \((1100)_2\)
(D)\(_{16}\) \((1101)_2\)
(E)\(_{16}\) \((1110)_2\)
(F)\(_{16}\) \((1111)_2\)
そのため、桁ごとに置き換えるだけで2進数↔16進数の変換ができます。例えば

\((11001101.1101)_2\)
という2進数の整数部分を「1100」「1101」、小数部分を「1101」のように小数点を基準に4桁ずつ区切って表の16進数に置き換えれば、

\((11001101.1101)_2 =\) (CD.D)\(_{16}\)
となります。

課題

課題解答