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

题目:

输入任意一个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());

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,203评论 0 7
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,457评论 0 2
  • 听着歌,回想刚才和闺蜜的聊天。好像其实是对方不够在意你。虽然恋爱的感受只有两个当事人能懂。但是也许只是我在自欺欺人...
    赛斯芙妮阅读 273评论 0 0
  • 生活中的事情,总会有那么一个重点摆在那里。当你明确的知道目标以后,可能还会被身边的美好事物诱惑或者吸引,这是种考...
    下划线阅读 268评论 0 1
  • 今天看了七月与安生,看的时候满脑子都是我的朋友F,我认识的她的时候也是13岁,像是宿命,逃不开的命运! 认识她那...
    大白不黑阅读 331评论 0 0