プロが教える店舗&オフィスのセキュリティ対策術

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));
}
}

}

A 回答 (2件)

>>f = f * (2^n); //((2^n)の部分は別途計算しておく)


>のところがちょっとよく分からないのですが・・・

(2^n)で「2のn乗」を表したつもりですが、
Javaには累乗の演算子がないので、

int num;
num = 1;
for( int i=0;i<n;I++){ num *= 2; }

のように計算するとの意味です。
    • good
    • 0
この回答へのお礼

返事遅れてすみませんでした。
ちゃんと出来ました!
丁寧に説明していただいて本当にありがとうございました!

お礼日時:2003/02/19 17:18

少数の下の方はきりがないので、nケタまで求めるとして、


float f;
int x;
String s;
f = f * (2^n); //((2^n)の部分は別途計算しておく)
x = (int)f;
s = Integer.toBinaryString(x);
としておいてsの末尾のnケタを得る、というのはどうでしょう。

「小数部を2倍した数を求め、1以上になれば1を立て、1未満になれば0を立てる。
そして、その数からまた小数部を取って繰り返す」
という方法もありますが、これだと実数計算を何回もやることになるので
あまり奨められません。

この回答への補足

>f = f * (2^n); //((2^n)の部分は別途計算しておく)
のところがちょっとよく分からないのですが・・・
最近Javaをはじめたばかりであまり詳しくないのですみません。

補足日時:2003/02/15 19:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!