c语言中关于位与的问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 16:46:42
m=64;
if(m%64 == 0)
if(m&63 == 0)
为什么这两个语句的结果会不一样,为什么?

& 运算符是按位与,比如:64在内存中形势为:0x0100 0000,
而63在内存中存放的形式为:0x0011 1111;
如果按位与运算,其结果为0x0000 0000;

第一个判断的结果为真。

第二个判断句中,但是考虑到运算符的优先级问题,==号运算符高于&,所以
先算63==0,得出结果为false,就是0,然后m再和0进行按位与,结果仍然是0,判断为否,

%是取余数
&是与运算,肯定不一样啊

m%64=1
m&63=0
在C中求与运算时,非0即为1,所以m和63都可以看做是1

应该是一样的啊
你把程序写出来看下