我有一個在兩個處理器上運行的程序,其中一個沒有浮點支持。因此,我需要使用該處理器中的定點執(zhí)行浮點計算。為此,我將使用浮點仿真庫。我首先需要提取處理器上支持浮點數(shù)的浮點數(shù)的符號,尾數(shù)和指數(shù)。因此,我的問題是如何獲取單個精度浮點數(shù)的符號,尾數(shù)和指數(shù)。在此處輸入圖片說明 到目前為止,這就是我所做的,但是除符號外,尾數(shù)和指數(shù)均不正確。我認(rèn)為,我缺少了一些東西。void getSME( int& s, int& m, int& e, float number ){ unsigned int* ptr = (unsigned int*)&number; s = *ptr >> 31; e = *ptr & 0x7f800000; e >>= 23; m = *ptr & 0x007fffff;}
3 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊
您&輸入的是錯誤的位。我想你要:
s = *ptr >> 31;
e = *ptr & 0x7f800000;
e >>= 23;
m = *ptr & 0x007fffff;
請記住,當(dāng)您使用時&,您會將未設(shè)置的位清零。因此,在這種情況下,您希望在獲得指數(shù)時將符號位清零,而在獲得尾數(shù)時希望將符號位和指數(shù)清零。
請注意,蒙版直接來自您的圖片。因此,指數(shù)掩碼將如下所示:
0 11111111 00000000000000000000000
尾數(shù)蒙版將如下所示:
0 00000000 11111111111111111111111
- 3 回答
- 0 關(guān)注
- 1795 瀏覽
添加回答
舉報
0/150
提交
取消