C AVRs环路中的位比较

C AVRs环路中的位比较,c,bit,avr,led,operations,C,Bit,Avr,Led,Operations,我正在学习AVRs上C语言的位逻辑,我遇到了一个问题 我想比较int8_t变量中的一个“I”位(从右边),如果它是1,则执行下一条指令,但它不起作用。以下是我写的: if (variable & (1<<i)==(1<<i)) instruction; if(变量&(1通过位屏蔽完成。如果要检查a的i第位是否为1,您将执行以下操作: if (a & (1 << i)) { // Do something } if(a&(1)我复制了

我正在学习AVRs上C语言的位逻辑,我遇到了一个问题

我想比较int8_t变量中的一个“I”位(从右边),如果它是1,则执行下一条指令,但它不起作用。以下是我写的:

if (variable & (1<<i)==(1<<i)) instruction;
if(变量&(1通过位屏蔽完成。如果要检查
a
i
第位是否为1,您将执行以下操作:

if (a & (1 << i))
{
    // Do something
}

if(a&(1)我复制了你的代码,它可以工作。我的应该也可以工作,但没有。至于uin8\u t dot中的数字,我用了二进制(0b0101)。谢谢。这里的优先级是这样的。你应该把
=
操作符的左部分括在括号中。
if (a & (1 << i))
{
    // Do something
}