2011-04-21 103 views
0

有人可以向我解釋將十進制格式(如2+(2/7))轉換爲IEEE 754浮點表示的步驟嗎?謝謝!如何將2+(2/7)轉換爲IEEE 754浮點

+0

你問關於彙編代碼中的算術表達式求值器,還是什麼? – 2011-04-21 23:46:24

+0

算術表達式 – 2011-04-21 23:50:55

+0

你的意思不僅僅是「2.0+(2.0/7.0)」?你想在IEEE754中使用這些數字的二進制表示形式,以及關於加法和除法如何工作的描述,或者其他什麼? – 2011-04-22 16:56:35

回答

1

首先,2 + 2/7不是大多數人稱之爲「十進制格式」的東西。 「十進制格式」會更普遍被用來表示一個數字,如:

2.285714285714285714285714285714285714285714... 

即使...有點朝三暮四。更常見的是,這個數字將被截斷或四捨五入到一定數量的小數位數:

2.2857142857142857 

當然,在這一點上,它不再是正好等於2 + 2/7,但「足夠接近」對於大多數的用途。

我們做類似的操作將一個數字轉換爲IEEE-754格式;代替基體10的,我們首先在基體2寫入數:

10.010010010010010010010010010010010010010010010010010010010010... 

接下來我們「正常化」的個數,通過在形式2^e * 1.xxx...寫入它的一些指數e(具體地,前導的數位位置我們的數位):

2^1 * 1.0010010010010010010010010010010010010010010010010010010010010... 

在這一點上,我們必須選擇一個特定的IEEE-754格式的,因爲我們需要知道有多少位保持周圍。我們選擇具有24位有效位數的「單精度」。我們圓重複二進制數爲24位:

2^1 * 1.00100100100100100100100 10010010010010010010010010010010010010... 
      24 leading bits   bits to be rounded away 

因爲尾隨位四捨五入比1000...越大,輪數最多:

2^1 * 1.00100100100100100100101 

現在,如何做其實這個值以IEEE-754格式編碼?單精度格式中已處於領先signbit(零,這是因爲數是正的),之後是包含二進制值127 + e八位,後跟該有效的小數部分:

0 10000000 00100100100100100100101 
s exponent fraction of significand 

在十六進制這給了0x40124925

相關問題