Я пытаюсь узнать больше об этом, чтобы реализовать в моем проекте.
В настоящее время я получил это в основном:
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");
Я не могу найти какие-либо ресурсы из моих недавних поисков, которые относятся к этому, я хочу изучить это, чтобы научить других, мне действительно интересно. Прошу прощения, если это сбивает с толку или просто.