位测试。计数位

Per*_*diu 1 c bit

为什么打印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;
    }
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 7

按位AND运算符的&优先级低于不等式运算符!=。所以这:

47&mask1!=0
Run Code Online (Sandbox Code Playgroud)

是相同的:

47&(mask1!=0)
Run Code Online (Sandbox Code Playgroud)

如下添加括号:

(47&mask1)!=0
Run Code Online (Sandbox Code Playgroud)

您将获得预期的结果。确保对进行相同的检查mask2