簡體   English   中英

如何在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);

任何人都可以幫我解決這個問題

這是一個澄清問題的測試程序。 我建議在代碼中使用類似的打印輸出,以檢查正在發生的事情,直到工作為止。

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

前三行輸出是為了確保輸入值正確,並且我知道該如何放置它們。 從一開始,我就知道近似值的位模式。 查看這些內容以及輸入的十六進制位模式,向我展示了它們需要走的方向。 第四行顯示生成的位模式。 最后,我使用了Louis Wasserman的答案中已經建議的Float.intBitsToFloat來獲取浮點數。

如果您具有int float的32位IEEE-754表示形式,則可以使用Float.intBitsToFloat轉換回float

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM