C AVRs环路中的位比较
我正在学习AVRs上C语言的位逻辑,我遇到了一个问题 我想比较int8_t变量中的一个“I”位(从右边),如果它是1,则执行下一条指令,但它不起作用。以下是我写的: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)我复制了
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
}