二进制位运算

Varuxn

2021-04-23 09:17:56

Personal

& 1&1=1 ,1&0=0 ,0&0=0 | 1|1=1 ,1|0=1 ,0|0=0 ^ 1^1=0 ,1^0=1 ,0^0=0 ```cpp 去掉最后一个零 >>1 在最后加一个零 <<1 在最后加一个1 x<<1+1 把最后一位变成1 x | 1 把最后一位变成0 x & ~1 最后一位取反 x ^ 1 把右数第K位变成1 x | (1<<(k-1)) 把右数第k位变成0 x & ~(1<<(k-1)) 右数第K位取反 x ^ (1<<(k-1)) 把最右面连续的1变成0(从最右开始) x & (x+1) 把右起第一个0变成1 x | (x+1) 把最右面连续的0变成1(从最右开始) x | (x-1) 取末尾K位 x &((1<<k)-1) 把末尾K位变成1 x | ((1<<k)-1) 末尾K位取反 x ^ ((1<<k)-1) 取右数第K位 (x>>(k-1)) & 1 ```