10進数での小数の表現を考える.例えば,次の小数は
 |
(16) |
となっており,整数の場合と同じである.小数点を境に,右側の指数部が-1, -2, -3と1ず
つ減少する.これは,先に示した整数の場合と全く同じで,簡単である.当然,
は理解していなくてはならない.
2進数での少数の表記も,10進数の場合と同じである.だから,2進数少数を10進数少数に
変換するのは簡単である.たとえば,
となる.当然
は理解していなくてはならない.
つぎは,先ほどと逆を考える.たとえば,先ほどの例の

を2進数で表現
する.そのためには,
と書き直せばよい.ただし,

は0または1である.そして,この

を並べると,
 |
(21) |
と2進数で表現できる.ここで,問題は

を求めることである.そこで,式
(
20)の両辺を2倍する.すると,
 |
(22) |
となる.この式の両辺の整数部と小数部は等しいので,
|
 |
|
 |
|
(23) |
となる.これで,

が求まった.同じように,残りの小数部分を2倍すると,
 |
(24) |
となる.これも,両辺の整数部と小数部が等しいので,
|
 |
|
 |
|
(25) |
が得られる.これで,

が求まった.同様に以下の通り,残りの小数部分の計算を進める
と,全ての

が求まる.
最後に,小数部がゼロとなったので計算は,完了となる.以上をまとめると
となる.要するに,小数部を2倍して,その整数部を書いていけばよい.
普通は,図7のようにして計算を進める.2倍して,整数部を書き出して,
小数部を再度2倍する.これを繰り返すと,10進数小数を2進数小数に変換することができ
る.10進数の0.1は循環小数ではないが,2進数にすると,
 |
(30) |
と循環小数になる.通常は,途中まで(必要な精度まで)で計算を打ち切る.
図 7:
小数の基数変換(10進数
2進数)
|
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年2月8日