位运算之二进制表示浮点数

题目:

输入任意一个0-1之间的浮点数,转为2进制数

如果小数点后32位无法精确表示 则输出 ERROR

小数点后用二进制表示为,右移2  即0.5 二进制表示 0.1,0.25表示0.01

0.625 即为 0.101

两个样例:

输入:

0.625     或     0.3

输出:

0.101      或     ERROR

tip:

已知十进制整数 转为二进制数,除二取余。可以思考十进制小数可以乘2取整,

即每次乘2,如果大于1则在当前小数点后位进1,直到取整后为0.

演示过程: 

0.625*2

1.25 -- 0.1

 0.25*2

0.5  -- 0.10

 0.5*2

1.0 -- 0.101

结果 0.101

(Java代码如下)

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double n = sc.nextDouble();

//字符串拼接

StringBuilder sb = new StringBuilder("0.");

while(n > 0) {

n *= 2;

if(n >= 1) {

sb.append("1");

n--;

}else {

sb.append("0");

}

if(sb.length() > 34) {//32+2

System.out.println("ERROR");

return;

}

}

System.out.println(sb.toString());

}

你可能感兴趣的:(位运算之二进制表示浮点数)