[問題] (急)浮點數用二進位表示

看板C_and_CPP (C/C++)作者 (因為貼心所以是好人)時間16年前 (2009/02/24 22:22), 編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/1
我用C++想寫一個浮點數轉成 在記憶體裡的二進位表示的程式 但是一直失敗 以下是程式碼 union x { float a; int b; public: x(); }; x::x(){ a=17.625; int c=1; for(int y=1;y<32;y++) { if(b&c==0) { cout<<"0"; } else { cout<<"1"; } c=c+1; } } int main() { x(); system("pause"); } 請問我要怎麼改勒? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.175.159

02/24 22:48, , 1F
if( (b&c) == 0){
02/24 22:48, 1F

02/24 22:48, , 2F
c=c<<1;
02/24 22:48, 2F

02/24 22:49, , 3F
這樣應該就可以動了
02/24 22:49, 3F

02/24 22:50, , 4F
for(int y=0;y<32;y++) //<--應該從零開始?
02/24 22:50, 4F

02/24 22:51, , 5F
雖然動了但是輸出是錯誤的轉換
02/24 22:51, 5F

02/24 22:53, , 6F
怪怪 我怎麼會輸出000000000000000101100011000001
02/24 22:53, 6F

02/24 22:55, , 7F
00000000000000001011000 11000001 0 <--反過來看
02/24 22:55, 7F

02/24 22:58, , 8F
原來如此 我眼殘了 ++"
02/24 22:58, 8F

02/24 23:01, , 9F
接下來要把他倒過來用STACK 對嗎?還是有更好的辦法?
02/24 23:01, 9F

02/24 23:21, , 10F
還是用ARRAY比較好
02/24 23:21, 10F

02/24 23:21, , 11F
解決問題了 感謝akasan的幫忙
02/24 23:21, 11F

02/24 23:22, , 12F
c=0x80 倒算回去
02/24 23:22, 12F

02/24 23:23, , 13F
錯了 c=0x8000
02/24 23:23, 13F

02/25 09:37, , 14F
根據搜尋結果 int *i = (int *)&f;
02/25 09:37, 14F

02/25 10:57, , 15F
to tsa 你應該是說0x80000000 不過這樣會有問題
02/25 10:57, 15F

02/25 11:00, , 16F
要改成unsigned int 並且在最後加個u
02/25 11:00, 16F

02/25 14:31, , 17F
這東西看起來好像昨天我們教授出的作業XD
02/25 14:31, 17F
文章代碼(AID): #19f0Aoce (C_and_CPP)
文章代碼(AID): #19f0Aoce (C_and_CPP)