C位屏蔽AND操作问题

时间:2013-01-27 19:18:38

标签: c

我是C的新手,我很难理解位掩码操作的用法。例如,我有以下代码

if((input & 0x08)== 0)
{

 //Do....//

}

我将输入作为int值00000111,二进制和十六进制为7,但是当我进行此比较时,它的计算结果为false(从不输入if语句)。

这是我理解的,应该发生什么

          00000111  input
        & 00001000  0x08
         ------------
          00000000  answer

所以我的问题是如何才能得到正确的输出。

1 个答案:

答案 0 :(得分:5)

int main(){
        int input = 7;

        if((input & 0x08)== 0)
        {
                printf("Hello!\n");
        }

        return 0;
}

你是对的,这个节目打印“你好!”。

您的代码中必定存在其他问题。尝试始终创建函数并测试最简单的示例。

尝试在input声明之前打印if的值。

希望它有所帮助。