用Union填入浮點數的bits |
尚未結案
|
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
|
windblown
中階會員 發表:0 回覆:117 積分:98 註冊:2003-11-14 發送簡訊給我 |
不知道你是不是要 IEEE format 的 float bits ?
void TestFloat() { union myFloat { float mF; // 實際的 float 值 struct FloatStruct { long mExponent : 8; long mMantissa : 23; long mSign : 1; } mStFloat; }; myFloat aF; aF.mF = 0.f; aF.mF = -1.2f; aF.mF = 1.2f; } |
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
|
windblown
中階會員 發表:0 回覆:117 積分:98 註冊:2003-11-14 發送簡訊給我 |
抱歉,之前是錯的 因為 c/c++ 無法使用二進位,所以可能要改用十六進位來表達你要輸入的數值
union myFloat { float mF; // 實際的 float 值 struct FloatStruct { unsigned long mMantissa : 23; unsigned long mExponent : 8; unsigned long mSign : 1; } mStFloat; }; myFloat aF; aF.mF = -16.f; // mSign=1, mExponent =0x83, mMantissa=0 aF.mStFloat.mSign = 0; // mF =16.0 aF.mStFloat.mExponent = 0x84; // aF.mf = 32.0 |
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |