为什么打印47(00101111)的第6位为1。从右边开始,从1开始计数?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mask1,mask2;
//bit testing;
mask1=1<<3;
mask2=1<<6;
if(47&mask1!=0)
printf("\n bit number 3 is 1");
else
printf("\n bit number 3 is 0");
if(47&mask2!=0)
printf("\n bit number 6 is 1");
else
printf("\n bit number 6 is 0");
return 0;
}
按位与运算符&
的优先级低于不等式运算符!=
的优先级。所以这个:
47&mask1!=0
与:相同
47&(mask1!=0)
添加括号如下:
(47&mask1)!=0
您将获得预期的结果。请务必对mask2
进行相同的检查。