• ベストアンサー

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

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

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8516/19359)
回答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
  • ベストアンサー率33% (328/973)
回答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

  • 二進数の循環小数を十進数に変換する方法

    二進数の循環小数を十進数に変換する方法が分かりません。 サイトも探してみたのですが、十進の循環を二進数に変換するものは見つかっても、逆は見つからなくて・・・ 教えていただけませんでしょうか、よろしくお願いします。

  • 進数の小数点をどう変換するのか

    現在進数の小数点で詰まってます 2進数⇒10進数へ変換するときは 11.01011⇒ 1*2~1+1*2~0+0*2~-1+1*2~-2+0*2~-3+1*2~-4+1*2~5 2 +1 +0 +0.25 +0.125 +0.625 +0.3125 3+1.3125 4.3125 2進数⇒16進数へ変換するときは 11.01011⇒ B.0 |8+0+2+1| B.0B で良いと思ってます(間違ってたらすいません) ここで本題なんですが、小数点を含んだ進数で 2進数⇒8進数 8進数⇒2進数 10進数⇒2進数 16進数⇒2進数 この[通り]の場合の小数点の出し方を何方かご存知ないですか? 無ければ無い、あればあるで教えて頂けないでしょうか 扱う数字はいくつでも勿論結構です、宜しく御願いします

  • 16進小数0.Cを10進数小数に変換したら0.75になりますがわたし自

    16進小数0.Cを10進数小数に変換したら0.75になりますがわたし自身良く解りません 詳しくおしえていただけませんでしょうかm(._.)m

  • 2、8、10、16進数に変換(小数点)

    10進数や2進数や8進数や16進数に変換する場合、 小数点以下を変換できません。 方法はありませんか?

  • 小数の2進数変換について教えてください。

    10進数を2進数に変換するプログラムを作ったのですが、 小数の2進数変換が出来ません。 小数を2進数に変換するにはどうしたらいいのでしょうか? よろしくお願いします。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet { TextField textField1 = new TextField(10); TextField textField2 = new TextField(10); Button displayButton1 = new Button("2進数変換"); public void init() { displayButton1 = new Button("2進数変換"); add(new Label("10進数")); add(textField1); add(textField2); add(displayButton1); displayButton1.addActionListener(new ToBinaryAction()); } class ToBinaryAction implements ActionListener{ public void actionPerformed(ActionEvent e) { int x = Integer.valueOf(textField1.getText()).intValue(); textField2.setText(Integer.toBinaryString(x)); } } }

    • ベストアンサー
    • Java
  • VB6.0で小数10進数を16進数に変換したい

    仕事に生かせるようになる為、VB6.0を勉強しています。 今仕事でディジタル通信を用いて信号のやり取りをするような機器を使っているのですが、例えば小数じゃないですけど、10進数の「1」は16進数に変換すると「3F800000」となるみたいです。 どのようなプログラムを作ればこのような変換が行えるのでしょうか? 分かる方いらっしゃいましたら教えてください。

  • 浮動小数点法での2進数変換

    浮動小数点法を用いての2進数への変換に関して質問です。 10進数の(-0.0001)を浮動小数点表示を用いて2進数に変換しなさいという問題が全くわかりません。 どなたか詳しく解説してください。お願いします。

  • 10進数の14.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか?

    10進数の14.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか? 10進数の-7.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか? 計算方法を教えてください。

  • 循環小数の進数変換について質問です。次の16進数を10進数に直したいの

    循環小数の進数変換について質問です。次の16進数を10進数に直したいのですが、どうすればよいのかわかりません;どなたかお力添えをお願いします。 (1)0.2222222222222222… (2)0.6666666666666666…

  • 基数変換 (小数)

    8進数の27.8と16進数の3C.Bを加算した結果を、16進数で表したものはどれか。という問題をやっていたのですが、小数の場合の8、16進数の変換の仕方が分かりません。サイトで調べたのですが分かりやすい説明の仕方をしたサイトがありませんでした。なので、良ければ詳しく教えていただけないでしょうか?(2進数から10進数への小数変換は分かります。例10.10 = 2.5) 分からない事〔8進数から2進数へ変換 例27.8→?〕 〔16進数から2進数へ変換 例3C.B→?〕