10進数の数を位ごとに分解すると、
1234=1×103+2×102+3×101+4×100
のように
10の累乗の和で表すことができます。これは2進数においても同じです。
これは整数の場合であり、小数の場合はどうなっているのかを10進数から見ていきます。
例として、(0.1234)10で考えてみます。
まずは
10000倍して
1234にします。この時点で
0.1234と
1234の関係は
0.1234=1234/10000=1234×10−4
です。また、
1234を位ごとに分解した式は一番上のようになるので、
0.1234=(1×103+2×102+3×101+4×100)×10−4=1×10−1+2×10−2+3×10−3+4×10−4
となります。このことから、10進数は、10のべき乗で表現できることがわかります。
これを段階的に見ていくと
0.1234の整数部分は0です。すなわち100の位(一の位)は0であることがわかります。
10倍すると1.234となり、これの整数部分は1です。10倍して1になったので10−1の位(小数第一位)は1であることがわかります。
整数部分を取り除きさらに10倍すると2.34となり、これの整数部分は2です。0.1234から100倍して2になったので10−2の位(小数第二位)は2であることがわかります。
整数部分を取り除きさらに10倍すると3.4となり、これの整数部分は3です。0.1234から1000倍して3になったので10−3の位(小数第三位)は3であることがわかります。
整数部分を取り除きさらに10倍すると4となり、これの整数部分は4です。0.1234から10000倍して4になったので10−4の位(小数第四位)は4であることがわかります。小数部分はなくなったのでこれ以上10倍する必要はありません。
以上のことから、
0.1234=1×10−1+2×10−2+3×10−3+4×10−4
となることがわかります。
このように10進数の小数を他の進数に変換するには求めたい進数の数を掛けて整数部分を取り出していけば変換することができます。
これを利用して2進数の小数を求めることができるでしょうか?
例として、10進数の(0.375)10について考えてみます。
これは
8(=23)倍すると
3になります。すなわち
0.375=3/8=3×2−3
となります。
そして10進数の
(3)10は、2進数で
(11)2となるので、
0.375=(1×21+1×20)×2−3=1×2−2+1×2−3
したがって、10進数と同じく小数点を使って小数を表現するならば10進数の
(0.375)10は2進数では
(0.011)2と表すことができます。
これを段階的に
2を掛ける方法で求めると
0.375の整数部分は0なので、20の位は0です。
0.375を2倍すると0.75となり、これの整数部分は0です。すなわち2−1の位は0です。
0.75を2倍すると1.5となり、これの整数部分は1です。すなわち2−2の位は1です。
整数部分を取り除き2倍すると1となり、これの整数部分は1です。すなわち2−3の位は1です。これで小数部分はすべて整数部分へ移りました。
以上から、
(0.375)10は
(0.011)2に変換されることがわかります。
10進数の無理数や無限小数のような数は小数点以下が無限に続く数と説明されますが、これはいくら10をかけても整数にならない数とも言えます。
同様に2進数にもそのような数が存在します。
2進数における小数点以下が無限に続く数とは、いくら2をかけても整数にならない数のことで例えば(0.3)10があります。
上記の小数の2進数変換を使って求めてみると
0.3の整数部分は0なので、20の位は0です。
0.3を2倍すると0.6となり、これの整数部分は0です。すなわち2−1の位は0です。
0.6を2倍すると1.2となり、これの整数部分は1です。すなわち2−2の位は1です。
整数部分を取り除き2倍すると0.4となり、これの整数部分は0です。すなわち2−3の位は0です。
0.4を2倍すると0.8となり、これの整数部分は0です。すなわち2−4の位は0です。
0.8を2倍すると1.6となり、これの整数部分は1です。すなわち2−5の位は1です。
整数部分を取り除き2倍すると1.2となり、これの整数部分は1です。すなわち2−6の位は1です。
2−5の位を求めた時点で小数部分が2−1の位を求めたときの小数部分と同じなので、2−6の位以降は2−2の位から2−5の位までと同じ並びを繰り返すことがわかります。すなわちいくら2を掛けても整数にすることはできません。
したがって、(0.3)10は(0.0˙100˙1)2という循環小数に変換されます。