• ベストアンサー

小数の10進数を2進数に変換する方法

小数の10進数を2進数に変換するには、変換したい10進数の小数部を小数が0になるまで2倍するのはなぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

2進小数の 0.abcdef を考えます(a~fは0か1です) これを10進数にする際は 2^-1*a+2^-2*b+2^-3*c+2^-4*d+2^-5*e+2^-6*f を10進で計算します。 上記式を2倍すると(10進小数を2倍するのと同じ意味) 2^0*a+2^-1*b+2^-2*c+2^-3*d+2^-4*e+2^-5*f となり、2^0は1ですから 1*a+2^-1*b+2^-2*c+2^-3*d+2^-4*e+2^-5*f という式になります。 つまり、1回2倍すると、整数部に「a」が「0か1」として現れます。 「a」が得られたら、式から「1*a+」を取り除き 2^-1*b+2^-2*c+2^-3*d+2^-4*e+2^-5*f の式にします。 これは「2倍した後の小数部だけ残して計算し続ける」と同じ意味です。 残った小数部をまた2倍すると、つまり 2^0*b+2^-1*c+2^-2*d+2^-3*e+2^-4*f を計算すると、整数部に「b」が現れます。 同様に2倍、2倍と繰り返すと2進数での「a」「b」「c」「d」「e」「f」が1桁づつ得られます。 「f」が得られた段階で、小数部が無くなります。つまり、小数が0になります。 これと同じ事を「10進数の小数に対して行う」と、同じように「2進数のa、b、c、d、e、f、……が得られる」のです。 まったく同じ事が、10進数でも出来ます。 10進数の小数「0.12345」を10倍すると「1.2345」になり、整数部に最初の数字「1」が現れます。 次に「0.2345」を10倍すると「2.345」になり、整数部に次の「2」が現れます。 これを繰り返すと「3」「4」「5」が順に得られ「5」が得られた時点で小数部が0になります。 同様の事が他の進数でも成り立ちます。 3倍すれば3進数になりますし、4倍すれば4進数、5倍すれば5進数になり、2倍すれば2進数になるのです。16倍すれば16進数にできます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • retorofan
  • ベストアンサー率34% (440/1290)
回答No.2

小数の10進数を2進数に変換するのに、 変換したい10進数の小数部を小数が0になるまで2倍します。 その理由は、2進数の小数部の重みが2の負の累乗になるからです。 例えば、 ・0.5(10) ー>0.1(2)  0.5 × 2 = 1 → 整数部は1  よって、0.5(10) = 0.1(2)となる。 ・0.25(10) ー>0.01(2)  0.25 × 2 = 0.5 → 整数部は0 0.5 × 2 = 1 → 整数部は1  これらの整数部を上から並べると、0.25(10) = 0.01(2)となる。 したがって、 10進数の小数部を2倍することで、 その整数部が、2進数の小数部の最上位ビットに対応します。

すると、全ての回答が全文表示されます。

関連するQ&A