Я пытаюсь узнать больше об этом, чтобы реализовать в моем проекте.
В настоящее время я получил это в основном:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
Теперь я хочу сделать немного более сложные вещи, я хочу применить три таких флага:
flags = (0x1 | 0x2 | 0x4);
А потом убрать с него флаги 0x1
и 0x2
? Я думал, что мог бы сделать что-то вроде этого, применяя побитовое НЕ (и побитовое И, чтобы применить это):
flags &= ~(0x1 | 0x2);
Очевидно, они остаются там или что-то в любом случае, когда я проверяю.
Я также не знаю, как проверить, не существуют ли они в битовых флагах (поэтому я не могу проверить, работает ли мой предыдущий код), было бы что-то вроде этого?
if(flags & ~0x2)
printf("flag 2 not set");
Я не могу найти никаких ресурсов из моих недавних поисков, которые относятся к этому, я хочу научиться этому, чтобы научить других, мне действительно интересно. Я прошу прощения, если это сбивает с толку или просто.