">>" 和 "<<"操作符的问题
好久没有用C,有些迷茫了
unsigned long tempIrKeyVal;
.
.
.
if( ((tempIrKeyVal> > 16)&0xFFFF) == 0x01EA )
和
if( (tempIrKeyVal> > 16) == 0x01EA )
有什么区别,为什么要&0xFFFF ??
谢谢!
[解决办法]
你的unsigned long 肯定不止16位吧?
&0xffff就是只要后16位。
[解决办法]
就是在32位系统下,也有有符号无符号的区别.
当是个有符号数,且为负时,右移左边一般补1而不是0这时区别就出来了.
[解决办法]
(tempIrKeyVal> > 16)&0xFFFF 只需要最后16位(不管这个系统是多少位的)
[解决办法]
肯定有区别:(tempIrKeyVal> > 16)后,仍然是unsigned long类型. "&0xFFFF "后才会变成unsigned short类型.