如何提取 JAVA 中的 IEEE 754 浮点表示

How to extract the IEEE 754 float representation in JAVA

我在两个整数变量中获取 IEEE754 格式的浮点值。整数为 13107 和 17184。需要交换整数。现在,我如何从这两个整数中提取浮点值?。这些整数的浮点值将等于 160.19(大约)。我的代码仅提供 1.1 的结果 ..

              int buffer = 0;
              int float_value = 0;
              float result = 0;
              float value = 0, mantissa = 0;

              if (swap == FALSE) {
                        float_value = rec_buf;
                        float_value = float_value << 16;
                        buffer = rec_buf1;
                        float_value = (float_value | buffer);
                }else{
                        buffer = rec_buf1;
                        float_value = rec_buf;
                        float_value = float_value << 16;
                        float_value = (float_value | buffer);
                }



                String a = Integer.toBinaryString((int)float_value);
                value = Float.valueOf(a);

谁能帮我解决这个问题

如果您在 int 中有 float 的 32 位 IEEE-754 表示,您可以使用 Float.intBitsToFloat 转换回 float

这里有一个测试程序来澄清问题。我建议在您的代码中使用类似的打印输出来检查发生了什么,直到它正常工作。

public class Test {
  public static void main(String[] args) {
    System.out.println(Integer.toHexString(Float.floatToIntBits(160.19f)));
    int a = 13107;
    System.out.println(Integer.toHexString(a));
    int b = 17184;
    System.out.println(Integer.toHexString(b));
    int bits = b << 16 | a;
    System.out.println(Integer.toHexString(bits));
    System.out.println(Float.intBitsToFloat(bits));
  }
}

输出:

432030a4
3333
4320
43203333
160.2

前三行输出是为了确保输入值是正确的,我知道将它们放在哪一边。从一开始,我就知道近似值的位模式。看着那个和输入的十六进制位模式告诉我他们需要走哪条路。第四行显示了生成的位模式。最后,我使用了 Float.intBitsToFloat,正如 中所建议的那样,得到了浮点数。