A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王运科 中级黑马   /  2012-4-1 12:42  /  1552 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String ret = Integer.toBinaryString(-5);   
       System.out.println(ret);   
      DecimalFormat df = new DecimalFormat  ("00000000,00000000,00000000,00000000");   
      System.out.println(df.format(Integer.valueOf(ret)));  

出现异常如下:
11111111111111111111111111111011
Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111111011"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
at com.develop.bit.TestBitCalculate.main(TestBitCalculate.java:60)

但如果把Integer.valueOf改成Double.valueOf,异常就没有了,但输出的值很奇怪。如下:
11111111111111111111111111111011
11111111,11111111,20000000,00000000
求解!谢谢。


1 个回复

正序浏览
toBinaryString是把-5转化为二进制,负数在计算机中是以补码形式存储
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马