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

OLE*_*SHA 1 java floating-point binary

我想创建浮点数的二进制表示形式,并能够在需要时解析该数字。我所说的“二进制表示”并不是指“ 0.00101”,而是类似“ 101000101”的东西,也就是说,由0s 和1s 组成的序列,没有小数点分隔符。我需要一种方法来在Stringfor a中创建此类表示double并解析 adouble的 a String。请不要提及 XY 问题,因为我确实需要此方法(类似于“无符号二进制值”)。

先感谢您。

将双精度转换为二进制表示形式?double似乎解决了解析到的问题String,但我仍然需要帮助做相反的事情:从二进制到double.

rge*_*man 5

要将 a 的位转换double为 a String,您可以使用Double.doubleToLongBits,它创建long与 具有相同位的a double,然后将Long.toBinaryString其转换为 a String,其中位作为字符。

double test = 0.5;
long doubleBits = Double.doubleToLongBits(test);
String doubleBitsStr = Long.toBinaryString(doubleBits);
System.out.println(doubleBitsStr);
Run Code Online (Sandbox Code Playgroud)

输出:11111111100000000000000000000000000000000000000000000000000000

要转换回来,请使用Long.parseLong基数2Double.longBitsToDouble

doubleBits = Long.parseLong(doubleBitsStr, 2);
test = Double.longBitsToDouble(doubleBits);
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

输出:0.5

要将 a 的位转换float为 a String,您可以使用Float.floatTointBits,它创建int与 具有相同位的an float,然后将Integer.toBinaryString其转换为 a ,String其中位作为字符。

float test2 = 0.5f;
int intBits = Float.floatToIntBits(test2);
String intBitsStr = Integer.toBinaryString(intBits);
System.out.println(intBitsStr);
Run Code Online (Sandbox Code Playgroud)

输出:111111000000000000000000000000

要转换回来,请使用Integer.parseInt基数2Float.intBitsToFloat

intBits = Integer.parseInt(intBitsStr, 2);
test2 = Float.intBitsToFloat(intBits);
System.out.println(test2);
Run Code Online (Sandbox Code Playgroud)

输出:0.5