对于位运算,运算符有:&(与),|(或),^(异或),~(取反,不分正负数),<<(按位左移,右边补0),>>(按位右移,正数则左边补0)
而位运算则可以按照以下这几步来处理
1、确定符号
得到1 -> |1 其它位0 (任何数或1,得到1;任何数或0,为本身,这样可以得到)
得到0 ->&0 其它位1 (任何数与0,得到0;任何数与1,为本身,这样可以得到)
取反->^1 其它位0
2、确定数字
3、构造上一步的数字
例:
把右数第k位变成1 | (101001->101101,k=3) | x |= (1<<(k-1))
把右数第k位变成0 | (101101->101001,k=3) | x &= ~(1<<(k-1))
右数第k位取反 | (101001->101101,k=3) | x^= (1<<(k-1))
取末三位 | (1101101->101) | x & 7
取末k位 | (1101101->1101,k=4) | x & ((1 << k)-1)
取右数第k位 | (1101101->1,k=4) | (x >> (k-1)) & 1
根据上面的3步,就可以将绝大部分的位运算解决