Я пытаюсь ввести оператор 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");
}
}
, который печатает NO
(как это необходимо) и печатает YES
, если изменить немного 7, 4, или 2, чтобы 0.
Неработающий код:
#include <stdio.h>
void main() {
unsigned char ch = 0b11111111;
if(~(ch | 0x6B)) {
printf("%s\n", "YES");
}
else {
printf("%s\n", "NO");
}
}
Я довольно озадачен, как я думаю, что эти две части кода являются одинаковые? Благодаря!
Спасибо, что решить эту проблему, и делает много смысла. – fenton06