【位运算】二进制状态压缩

将一个长度为m的boolean数组用一个m位二进制数表示。

取出n在二进制下的第k位 (n >> k) & 1
取出n在二进制下的后k位 n & ((1 << k) – 1)
把n在二进制下的第k位取反 n xor (1 << k)
对n在二进制下第k位赋1 n | (1 << k)
对n在二进制下第k位赋0 n & ( ~ (1 << k))