next up previous
: 2.6 整数データの内部表現 : 2 情報表現: 数値と文字の表現 : 2.4 情報の単位

2.5 2進数と10進数の相互変換

10進数 $\rightarrow$ 2進数の変換

例題2.2    10進数の35を2進数に変換する(convert)には?

$<$解答例$>$ 下のように2での割算を商が1になるまで繰り返し、最後の商 (quotient)の後に余り(remainder)を逆順に並べていく。

\begin{displaymath}
\begin{array}{r@{\ }c@{\protect\raisebox{4ex}{\quad}}rc@{\cd...
...{\boldmath$1$}&\multicolumn{2}{c}{}&\mbox{(MSB)}\\
\end{array}\end{displaymath}

解:10進数の35は2進数表現で100011となる。

例題2.3    10進小数(decimal fraction)の0.3を2進小数(binary fraction)に変 換するには?

$<$解答例$>$ 下のように、小数点以下の部分だけに2の乗算を繰り返し、結 果の整数部を並べる。


\begin{tabular}{r@{}c@{\ }ccc@{}rl}
0.3 &\ $\times$&2&$=$&\mbox{\boldmath$0$}.&{...
...\mbox{\boldmath$1$}.&2 &(1.2は前にも現れたのでこの数は循環小数)\\
\end{tabular}

解:求める2進小数は 0.0 1001 1001 1001 $\cdots$ これは循環小数(circulating fraction)であるから、繰り返しの1周期のパター ンの最初と最後の位置をドットで示して $0.0\dot{1}00\dot{1}$ となる。

2進数 $\rightarrow$ 10進数の変換

例題2.4    2進数の 11001を10進数に変換するにはどうすればよいか。

$<$解答例$>$ \begin{displaymath}
\begin{array}{ccccccccccccccccc}
1&&1&&0&&0&&1&&&&&&&&\\
16...
...+&4\times0&+&2\times0&+&1\times1&=&
16&+&8&+&1&=&25
\end{array}\end{displaymath}

算法上は \begin{displaymath}
(((1\times2+1)\times2+0)\times2+0)\times2+1
\end{displaymath} という順に上位の桁から順に最下位まで計算していくのがよい。

例題2.5    2進小数の 11.11 を10進小数に変換するには?

$<$解答例$>$


\begin{tabular}{ccccccccc}
1 & & 1. & & 1 & & 1\\
2 &$+$& 1 &$+$& 0.5 &$+$& 0.25 &$=$& 3.75
\end{tabular}

整数部と小数部を別々に計算して最後にまとめるとよい。

$n$進数 $\leftrightarrow$ 10進数の変換

コンピュータでは$n=2$の他 8, 16がよく使われる。10進数を$n$進数に変換す るには、上の$n=2$の場合と同様に元の数を商が$n$より小さくなるまで順に $n$で割り、最後の商と余りを逆順に並べていけばよい。16進数で各桁が10以 上の場合は対応する英字に置き換える。

$n$進数を10進数に変換するには、2進数の場合と同様に上の桁から順に、それ までの結果を$n$倍してその桁を加える操作を繰り返す。$n$進数で表記された $m$桁の数を$x_mx_{m-1}x_{m-2}\cdots x_1$とすれば、

\begin{displaymath}
(\cdots((x_m\times n+x_{m-1})\times n+x_{m-2})\cdots)\times n+x_1
\end{displaymath}

$n$進数 $\leftrightarrow$ 2進数の変換

$n=8$または16の場合、$n$進数の1桁は2進数の3桁あるいは4桁に対応する。こ のことを利用すれば、2進数への変換は$n$進数を桁毎に2進数に変換して並べ ればよく、逆に2進数の$n$進数への変換は2進数を下位から3桁または4桁ずつ区切っ て桁毎に$n$進数に変換すればよいことがわかる。




% latex2html id marker 1355
\fbox{\bf 課題\thesection.\arabic{practice}\relax}     次の16進数をそれぞれ10進数および2進数に変換してみよ。


  1. 15AF
  2. FACE
  3. CAFE


next up previous
: 2.6 整数データの内部表現 : 2 情報表現: 数値と文字の表現 : 2.4 情報の単位
kuchi@mech.kumamoto-u.ac.jp