關於位運算中將浮點數以二進位制輸出的問題

2021-08-18 19:44:45 字數 577 閱讀 4442

這幾天做c++中位運算方面的作業,將記憶體塊的二進位制內容反轉等都順利做出,但float和double型以二進位制輸出卻是難了我好久,由於一直想把所用型別的位元組賦給四個char,然後再轉換為int,一直未能得到正確的結果,最後在臨班相似作業的提醒下想到了如下方法,

float arrayx(float x)

else

tem >>= 1;

}cout << " ";

p1--;

}cout << endl;

return 0;

這個方法是通用的哦,可以寫成模板的。

同學在討論這個話題時提到了用?:語句

也就是說,將char型別作為乙個條件用是可以的,但是若將它進行位運算來進行對整型陣列的賦值,將會出現很大問題。

而既然可以用作條件,就可以用?:語句了,如下

float arrayx(float x)

p1--;

}for (int i = sizeof(x) * 8 - 1; i >= 0; i--)

cout << endl;

return 0;

同樣是可以編寫為乙個簡單的模板函式的!

了解二進位制浮點數運算

所有的浮點數值計算都遵循ieee 754規範。ieee 754規定了四種表示浮點數值的方式 單精確度 32位 雙精確度 64位 延伸單精確度 43位以上,很少使用 與延伸雙精確度 79位元以上,通常以80位元實做 只有32位模式有強制要求,其他都是選擇性的。大部分程式語言都有提供ieee格式與算術,...

浮點數的二進位制

1.前幾天,我在讀一本c語言教材,有一道例題 include void main void 在我的編譯器下 編譯是會發生錯誤的。錯誤 cannot convert from int to float win7 vc6.0 sp6 執行結果如下 num的值為 9 pfloat的值為 0.000000 ...

浮點數轉化二進位制

乙個int型別表示的整數值是 2 31 2 31 1 32位二進位制表示 1111111111111111 11111111 11111111 011111111 11111111 11111111 1111111 類似整數聯想到浮點數是怎麼表示的呢?最初正常人可能為這樣想的 但是這樣好像表示的數也...