【数の構成】循環小数の進数を変換する

前回までの内容で、10進法の小数を2進法に変換すると、もとは有限小数なのに循環小数になるケースがあること、そして、それがコンピュータで扱われるときに演算誤差が生じる可能性があること、についての基礎的な理解は得られました。が、「10進法と2進法の変換」という点からするとまだやり残している部分があります。それは、最初に循環小数を与えられたらどうするか、という課題です。ついでですので、こちらも簡単にみておきましょう。

この節を最初から読む
この節の目次にもどる

10進数と2進数の変換

上の図をみてください。このうち(1)(2)については対応済みで、(2)で10進法の有限小数を2進に変換すると循環小数になってしまうケースがあるのでした。ここで見るのは(3)(4)のケースで、変換元が10進、あるいは2進の循環小数の場合です。


分数法T〜10進法の循環小数を2進法に変換する

これまで扱ってきた10進/2進の変換方法自体は、もとの構造式を変形しただけの基本的なもので、はじめの値が有限小数でも循環小数でも変更しなければならない理由はありません。ただ、循環小数の場合は小数のままだと正確な計算がしにくいので、これをもともとの分数(整数の比)の状態に戻して計算する、という応用をとってみます。例として「1/3=0.333...」という循環小数に変換をかけてみましょう。

10進法の循環小数を2進法に変換

途中の計算を分数のまま進めて、「桁あふれ」が生じたら整数分の1をすくって桁にはめこんでいきます。同じやり方で問題なく2進小数に変換できることが確認できます。先に確認した理由から、10進の循環小数は2進でも必ず循環小数になります(上図の(4)のケース)。


分数法U〜2進法の循環小数を10進法に変換する

次に、0/1のふたつの数字だけでできた2進法の循環小数を渡されて、これは10進法だといくつになりますか、と聞かれた場合を考えましょう。2進小数を10進に変換するには、いちばんお尻の数をつかまえて2で割りながら上の桁に向かって編み上げていくというのが定石でした。ですが、循環小数の場合には、どこまで降りてもそのいちばんお尻の数というのがないので困ります。そこで、この節の最初にみた10進法の循環小数を分数に変換する方法を引っ張り出してきて、その応用でこちらも分数を介在させて変換してみることにしましょう。

下の例でみてください。参考になるように、対応する10進数の計算も隣に並べておきます。

2進法の循環小数を10進法に変換

この計算で、最後の「110/1111」のところまで来たら、分数の分子と分母をそのまま10進の分数にスライドさせることで、目当ての10進小数を得ることができます(あるいは、「2進法の引き算」が分かりにくければ「10000a−a」の時点でそのまま横の10進数にスライドしてもかまいません)。

この計算で注目されるのは、2進小数の循環節が 「1111...」 という数で割られているところです。数字が2つしかない2進数では、「1」は桁の最初の値でもあると同時に最後の値でもあります。従って、「1111...」は10進数の「9999...」の位置づけに相当する数で、あと1だけ継ぎ足してやると、ドミノ倒しのように桁がきれいにそろって、ちょうど2の累乗になる値です。

2進小数の「1111...」


posted by oto-suu 11/07/30 | TrackBack(0) | 数の構成 | このブログの読者になる | 更新情報をチェックする
<< 前のページ | TOP | 次のページ >>

この記事へのトラックバック