檢查一下

C 風格的位操作

可以通過將數字向右移動 1 次然後在其上執行按位 AND(&)來獲得該位的值:

(number >> x) & 1LL;  // 1 if the 'x'th bit of 'number' is set, 0 otherwise

右移操作可以實現為算術(帶符號)移位或邏輯(無符號)移位。如果表示式 number >> x 中的 number 具有有符號型別和負值,則結果值是實現定義的。

如果我們直接就地獲得該位的值,我們可以改為左移掩碼:

(number & (1LL << x));  // (1 << x) if the 'x'th bit of 'number' is set, 0 otherwise

兩者都可以用作條件,因為所有非零值都被認為是真的。

使用 std::bitset

std::bitset<4> num(std::string("0010"));
bool bit_val = num.test(1);  // bit_val value is set to true;