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;
}:将 的二进制每位取反。 ↩︎