Appearance
简介
由于 bool
变量只有 bool
数组都可用一个二进制数表示。
将 bool
数组
状态压缩的相关操作方法:
操作 | 运算 |
---|---|
取出第 | (n >> (k - 1)) & 1 |
将第 | n ^= (1 << (k - 1)) |
将第 | n |= (1 << (k - 1)) |
将第 | n &= ~ (1 << (k - 1)) |
lowbit 运算
例:
定义
设
- 将
的每位取反,此时 , ,其余位和原来相反; - 再计算
,此时 , ,其余位仍和原来相反; - 因此在
中[1],仅有第 位为 。这就是 的 。
由于在 C++
采用的补码表示下
cpp
int lowbit(int x) {
return x & -x;
}
:将 的二进制每位取反。 ↩︎