如何从Java中的二进制表示中获取浮点数?

时间:2015-05-01 18:12:51

标签: java binary floating-point

我想创建一个浮点数的二进制表示,并能够在需要时解析该数字。通过"二进制表示"我的意思并不是" 0.00101"但类似于" 101000101",也就是说,0&{39}和1没有小数点分隔符。我需要一种方法,在String中为double创建此类表示,并解析double的{​​{1}}。 请不要提及X Y问题,因为我确实需要这种方法(例如"无符号二进制值")。

提前谢谢。

Convert Double to Binary representation?似乎解决了将String解析为double的问题,但我仍然需要帮助做相反的事情:从二进制到String

2 个答案:

答案 0 :(得分:2)

要将RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [QSA,NC,L] RewriteRule ^.*$ index.php [QSA,NC,L] 的位转换为double,您可以使用Double.doubleToLongBits,这会创建String,其位数与long相同,然后Long.toBinaryString将其转换为double,其中的位为字符。

String

输出:double test = 0.5; long doubleBits = Double.doubleToLongBits(test); String doubleBitsStr = Long.toBinaryString(doubleBits); System.out.println(doubleBitsStr);

要转换回来,请使用基数为11111111100000000000000000000000000000000000000000000000000000Long.parseLongDouble.longBitsToDouble

2

输出:doubleBits = Long.parseLong(doubleBitsStr, 2); test = Double.longBitsToDouble(doubleBits); System.out.println(test);

要将0.5的位转换为float,您可以使用Float.floatTointBits,这会创建String,其位数与int相同,然后Integer.toBinaryString将其转换为float,其中的位为字符。

String

输出:float test2 = 0.5f; int intBits = Float.floatToIntBits(test2); String intBitsStr = Integer.toBinaryString(intBits); System.out.println(intBitsStr);

要转换回来,请使用基数为111111000000000000000000000000Integer.parseIntFloat.intBitsToFloat

2

输出:intBits = Integer.parseInt(intBitsStr, 2); test2 = Float.intBitsToFloat(intBits); System.out.println(test2);

答案 1 :(得分:0)

Integer.toBinaryString(Float.floatToIntBits(yourNumber));不起作用吗?