我正在嘗試在我的項目中瞭解更多關於此的信息。位標誌的簡單布爾運算符
我目前已經得到這個基本上是:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
現在我希望做一些更復雜的事情,我所想要做的是運用三個標誌是這樣的:
flags = (0x1 | 0x2 | 0x4);
然後從中刪除標誌0x1
和0x2
?我想我可以做這樣的事情將位NOT(和位與應用它):
flags &= ~(0x1 | 0x2);
顯然,他們仍然有什麼或者當我檢查的方式。
我也不知道如何檢查它們是否不存在於位標誌(所以我不能檢查我以前的代碼是否工作),它會是這樣的?
if(flags & ~0x2)
printf("flag 2 not set");
我找不到適用於此的最近搜索的任何資源,我願意學習這個教別人,我真的很感興趣。如果這很混亂或簡單,我很抱歉。
我是在第一時間,謝謝! – John 2010-11-16 06:23:05
當然,沒問題。按位運算符很有趣。 :) – cdhowie 2010-11-16 06:23:35
現在我將如何檢查兩個標誌是否設置爲無布爾值?就像'if(flags&(0x1 | 0x2))',但即使我只設置了'0x1',它似乎也能工作。 – John 2010-11-16 06:24:20