获取最低位1 去除最低位1 LeetCode 231. 2 的幂
n为正整数时
n & (n - 1)其中 &表示按位与运算。该位运算技巧可以直接将n二进制表示的最低位1移除。
n & (-n),该位运算技巧可以直接获取 n 二进制表示的最低位的 1。由于负数是按照补码规则在计算机中存储的,
n表示为(a10...0)2,-n表示为(ā01...1)2+1=(ā10...0)2
二者按位与运算,高位全部变为 0,最低位的 1 以及之后的所有 0 不变,这样我们就获取了 n 二进制表示的最低位的 1。