[英]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.