### 位运算

位运算包括: 加 减 乘 取反 and 异或 

- 0110 + 0110 = 0110 * 2 ，也就是0110左移1位

- 0011 * 0100  0100 = 4， 一个数乘以 2^n 即是将这个数左移n

- a ^(~a) = 0

- x & (~0 << n ) 这样来看，0取反全部为1，然后将其右移n位，后面的全是0，x & (~0 <<n)， 后边的全为0， clear the rightmost n bits of x

  ​

Python的符号

- &：按位与

-  |：按位或

-  ^：按位异或

- ~：取反

-  <<：左移

- \>>：右移

  ​

Bit Facts and Tricks

```
x ^ 0s = x		x & 0s = 0		x | 0s = x
x ^ 1s = ~x 	x & 1s = x		x | 1s = 1s
x ^ x = 0		x & x = x 		x | x = x
```

