基本位运算

位运算是状态压缩DP的基础。

C/C++中的位运算算符(按优先级排序):

红色算符与位运算算符的优先级高低顺序容易弄混,这里强调一下。

~ (bitwise NOT) 按位非 ~x

*  /  %

+ -

>  >=  <  <=

<<  >> (bitwise left shift and right shift) 按位左移、右移 x>>y  x>>=y

== !=

& (bitwise AND) 按位与 x&y  x&=y

^ (bitwise XOR) 按位异或 x^y  x^=y

| (bitwise OR)    按位或 x|y  x|=y

 

基本操作

1、判断x的第i位      x & 1<<i

2、将x的第i位置0    x & ~(1<<i)

3、将x的第i位置1    x | 1<<i

4、求x的最低位的1           lowbit(x)  x & -x

 

你可能感兴趣的:(位运算)