[問題] 移位的問題

看板C_and_CPP (C/C++)作者 (異形)時間16年前 (2009/06/01 13:13), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串1/1
大家好 想問大家關於移位的問題 是這樣的 我今天宣告了一個int的out變數 經過執行後他變成80 也就是2進位的01010000 可是我想要最後把它像右移五位 變成2進位的01.010000 我的寫法是 printf("\n\n\n\n %f",(float)out>>6); 我把out在最後強制宣告為float 可是compile的時後他卻說 invalid operands of types `float' and `int' to binary `operator>>' 這是什麼意思呢? 請各位幫我解惑@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.188.94

06/01 13:15, , 1F
你可能要先研究一下 int 和 float 長啥樣 @@
06/01 13:15, 1F

06/01 13:21, , 2F
浮點數不能讓你這樣shift的, 要自己做這個效果, 您可能
06/01 13:21, 2F

06/01 13:21, , 3F
要搭配bit mask+shift自己手動把輸出變成這種效果:)
06/01 13:21, 3F

06/01 13:22, , 4F
補充一下, int的80和float的80它們bit expression可是
06/01 13:22, 4F

06/01 13:23, , 5F
天差地別的喔....@_@"
06/01 13:23, 5F

06/01 13:23, , 6F
具體請查IEEE 754浮點數表示法....
06/01 13:23, 6F

06/01 18:23, , 7F
bit mask? 可以問一下那是什麼嗎?
06/01 18:23, 7F

06/01 18:26, , 8F
如果你只是想除以2^5的話 (float)(out)/(float)(1<<5)
06/01 18:26, 8F

06/01 18:26, , 9F
<< >> 這種位元移位只能用在整數型別上
06/01 18:26, 9F

06/01 18:59, , 10F
bit mask就是對原本的值做and/or的位元運算,目的是保留特定
06/01 18:59, 10F

06/01 19:00, , 11F
位元,比如IP對最前16位元做保留,其他刪除,看是不是學術網路
06/01 19:00, 11F
文章代碼(AID): #1A8sE3QI (C_and_CPP)
文章代碼(AID): #1A8sE3QI (C_and_CPP)