我使用按位運算符來將一些布爾值存儲在一個變量中。我假設我存儲他們適當,雖然這裏是我的任務:邏輯&按位AND
int bit = 0;
bit |= 1;
bit |= 2;
bit |= 4;
bit |= 8;
我不確定是檢查的一部分。我對邏輯和按位運算符之間的區別有一個簡單的瞭解。下面是我如何檢查值:
if ((bit & 1) && (bit & 2) && (bit & 8)) {
std::cout << "a" << std::endl;
}
else {
std::cout << "b" << std::endl;
}
我想知道,如果那樣的條件是正確的(我做了一些測試,但我可能失去了一些東西),也是我想知道如果我可以檢查在同一時間多個位,例如:
if (bit && (1 & 2 & 8) {
std::cout << "a" << std::endl;
}
else {
std::cout << "b" << std::endl;
}
我知道,根據需要,最後將無法正常工作(至少這就是測試給了我),但我想說明我的想法。
你自己去決定它是否正確。如果第1,2和8位被設置,是否應該是真的?如果是這樣,那麼這是正確的。 'if(bit &&(1&2&8))'提案在任何情況下都不會評估爲真,因此顯然是錯誤的。 –
你的最後一個例子應該是'if(bit&(1 | 2 | 8))'。我認爲這會奏效。它會通過或者1,2,8一起創建一個掩碼,然後用'位'與AND來創建一個掩碼,如果第1,2或8位被設置,這將是真實的。 –
是的,我知道這是符合我自己的標準的。然而,我想知道它是否會按要求工作(這就是我的測試所說的),或者如果我應該採取其他的選擇。 – Rezniaq