C语言位操作问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:41:11
如下例子:
char a;
if(a&0x80)//检查a第8位是否为1
...
上面这句话不是a&0x80为真,等于1时if语句才成立吗?

如果a是10000000 的话,那么结果是100000000,括号内为1啊?
我是说如果结果10000000的话,if语句括号里怎么为真?
a 等于多少时 if(a&0x80) 为真??

if()括号内逻辑值非0即可执行语句;
原式只有在a 的最高位为0时不执行,否则都执行.

按位与&运算符是将两边的对应位按位进行逻辑与运算。每个对应的二进制的运算规则为:仅当对应位均为1时,才为1 ,否则为0.
所以如果a是10000000的话。a&0x80=10000000吧。

非0即为真
a 等于负数,if(a&0x80) 为真

恩,没什么问题,结果你写错了。