我试图在不更改原始位的情况下输入if
基于bit-wise
运算符的语句,并且很困惑为什么我所拥有的不起作用。
我正在检查第 7、4、2 位中的至少一个是否为 0。
工作代码:(它改变了我不想要的原始位)
#include <stdio.h>
void main() {
unsigned char ch = 0b11111111;
ch = ~(ch | 0x6B);
if(ch) {
printf("%s\n", "YES");
}
else {
printf("%s\n", "NO");
}
}
如果您将位7、4 或 2 更改为 0,则会打印NO
(应该如此)并打印。YES
非工作代码:
#include <stdio.h>
void main() {
unsigned char ch = 0b11111111;
if(~(ch | 0x6B)) {
printf("%s\n", "YES");
}
else {
printf("%s\n", "NO");
}
}
我很困惑,因为我认为这两段代码是相同的?谢谢!