因为做了些题都用到位运算,感觉有些运算使用位运算符更简单,现在整理一下。
常见的二元位运算是与( & )、 或( | )、 非( ! )、 异或( ^ ) 。它们和对应的逻辑运算非常相似。
A B A&B A|B A^B
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
位运算符是逐位进行的。
A B A&B A|B A^B
二进制 10110 01100 00100 11110 11010
集合 {1,2,4} {2,3} {2} {1,2,3,4} {1,3,4}
A&B、A|B、A^B分别对应集合的交、并和对称差。另外,空集为0,全集为{0,1,2,…,n-1}的 二进制为n个1,即十进制的2^n-1,所以方便起见,在程序中把全集定为(1 << n)-1。