如何将浮点数的值12345.12346f转换为二进制值的字符串,例如"0011010101010101",反之亦然?
如何将浮点数的值12345.12346f转换为二进制值的字符串,例如"0011010101010101",反之亦然?
我不确定这是否是您想要的,但以下是一个解决方案,可以获取IEEE 754浮点“双精度格式”位布局的二进制表示形式,以获取浮点数的内存表示:
int intBits = Float.floatToIntBits(yourFloat);
String binary = Integer.toBinaryString(intBits);
对于反向过程:
int intBits = Integer.parseInt(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
工作样例:
class F {
public static void main( String ... args ) {
System.out.println(
Integer.toBinaryString(
Float.floatToIntBits(12345.12346f)
)
);
}
}
输出:
1000110010000001110010001111110
对于带符号的浮点数,请使用Long或BigInteger解析字符串。通过int强制转换会导致32位第一个数字被解释为符号数字。
int intBits = Float.floatToIntBits(yourFloat);
String binary = Integer.toBinaryString(intBits);
反转过程:
int intBits = new BigInteger(myString, 2).intValue();
// int intBits = (int) Long.parseLong(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
您可以使用以下方法获取Java Float值的位表示:
Float.floatToIntBits(float f);
完成这个步骤后,你可以逐位测试结果中的每一个二进制位,从最高位开始,判断它是否为1,如果是则写入'1',否则写入'0'。