0
是否有一種算法可以通過整數運算將整數表示形式的32位整數轉換爲IEEE 754浮點表示形式?浮點數表示的整數表示
我對此有幾點想法,但目前爲止還沒有這些工作。 (使用C)
我在想轉移整數但後來我沒能 構建在新的浮點表示。
我想我可以將整數轉換爲二進制,但它具有與第一種方法相同的 問題。
是否有一種算法可以通過整數運算將整數表示形式的32位整數轉換爲IEEE 754浮點表示形式?浮點數表示的整數表示
我對此有幾點想法,但目前爲止還沒有這些工作。 (使用C)
我在想轉移整數但後來我沒能 構建在新的浮點表示。
我想我可以將整數轉換爲二進制,但它具有與第一種方法相同的 問題。
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
你是什麼意思的「整數轉換爲二進制」?它已經是二進制... – 2012-02-18 05:33:39