作者carlos761017 (异形)
看板C_and_CPP
标题[问题] 移位的问题
时间Mon Jun 1 13:13:38 2009
大家好
想问大家关於移位的问题
是这样的
我今天宣告了一个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
1F:推 Ebergies:你可能要先研究一下 int 和 float 长啥样 @@ 06/01 13:15
2F:推 VictorTom:浮点数不能让你这样shift的, 要自己做这个效果, 您可能 06/01 13:21
3F:→ VictorTom:要搭配bit mask+shift自己手动把输出变成这种效果:) 06/01 13:21
4F:→ VictorTom:补充一下, int的80和float的80它们bit expression可是 06/01 13:22
5F:→ VictorTom:天差地别的喔....@_@" 06/01 13:23
6F:→ VictorTom:具体请查IEEE 754浮点数表示法.... 06/01 13:23
7F:→ carlos761017:bit mask? 可以问一下那是什麽吗? 06/01 18:23
8F:推 LPH66:如果你只是想除以2^5的话 (float)(out)/(float)(1<<5) 06/01 18:26
9F:→ LPH66:<< >> 这种位元移位只能用在整数型别上 06/01 18:26
10F:推 zlw:bit mask就是对原本的值做and/or的位元运算,目的是保留特定 06/01 18:59
11F:→ zlw:位元,比如IP对最前16位元做保留,其他删除,看是不是学术网路 06/01 19:00