簡體   English   中英

將以下以IEEE浮點數表示的32位二進制數(S,小數,指數)轉換為十進制數

[英]Convert the following 32 bit binary numbers represented in IEEE floating point (S, Fraction ,Exponent) to decimal number

0 00000000000000000000000 0111011

我該怎么辦,我迷路了。

您的粗體顯示您可能對字段的順序有些困惑; IEEE通常對浮點數使用順序符號,指數,分數 (順便說一下,如果沒有NaN或其他非數字值,這允許使用doubles-complement-integer排序對IEEE浮點數進行排序。)

那么我們在這里看什么呢? 第一位是符號:0。所以我們有一個正數。 (如何記住這一點?回到允許使用的整數排序-二進制補碼整數中的前導數字表示它是負數。)

接下來的八位是指數:也是0。這是可能的最低指數值。 它通常表示一個無符號整數,偏差為127,即值-127。 但是,指數值0保留用於編碼次正規數(小於通常可表示的最小數)的數字; 在這種特殊情況下,有效指數為-126,而不是代表數字1.fraction * 2 ^指數,而次法線代表數字0.fraction * 2 ^指數。

最后,我們得到分數0000000000000000111011 因此,我們的總數為0.0000000000000000111011b * 2 ^ -126。 將其轉換為十進制留給讀者。

我同意@addaon先前發布的答案。 此外,可以使用某些語言(包括Java)輕松完成轉換:

public class Test {
   public static void main(String[] unused) {
      int raw = 0b0000000000000000000000000111011;
      float f = Float.intBitsToFloat(raw);
      System.out.println(f);
   }
} 

(您需要使用版本7來獲取二進制文字,但是在較早的版本中,可以直接減少相同的操作)

輸出為8.3E-44,與解釋為正的非規范化數字以及轉換網站一致。

暫無
暫無

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

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