2012-02-18 107 views
0

是否有一種算法可以通過整數運算將整數表示形式的32位整數轉換爲IEEE 754浮點表示形式?浮點數表示的整數表示


我對此有幾點想法,但目前爲止還沒有這些工作。 (使用C)

  1. 我在想轉移整數但後來我沒能 構建在新的浮點表示。

  2. 我想我可以將整數轉換爲二進制,但它具有與第一種方法相同的 問題。

+1

你是什麼意思的「整數轉換爲二進制」?它已經是二進制... – 2012-02-18 05:33:39

回答

2

excellent resource on float

Address +3  +2  +1  +0 
Format SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 

S表示符號位,其中1爲負,並且0是正的。

E是兩個互補指數與偏移127

M是23位尾數。最高位始終爲1 ,因此,不存儲

然後看here兩補


我將使用NUM爲一組位,我知道這ISN」 T標準數組c範圍訪問,但你明白了吧
所以對於一個基本的算法,我們開始填寫S.

bit S = 0; 
if (num[0] ==1) { 
    S = 1; 
    num[1..32] = -num[1..32] + 1; //ignore the leading bit. flip all the bits then add 1 
} 

現在我們已經設置了S,並且我們爲該數字的其餘部分提供了一個標量值。

然後,我們可以通過找到第一個索引1來將我們的數字定位到尾數。這也將讓我們找到指數。請注意,指數總是正數,因爲我們不能有小數整型值。 (也作特殊情況下的檢查,如果該值爲0先,以避免在這裏無限循環,或者只是適當地修改循環,我懶)

int pos = 1; 
signed byte E = 32; 
bit[23] M; 
while(num[pos] == 0) { 
    --E; 
    ++pos; 
} 
int finalPos = min(32, pos+23); //don't get too many bits 
M = num[pos+1..finalPos]; //set the mantissa bits 

然後你建立你的浮球隨位在S,E,M