n&(n-1) 的作用记录

n&(n-1)作用:将n的二进制表示中的最低位为1的改为0。

应用:
1. 求某一个数的二进制表示中1的个数

while (n > 0 ) {
    count ++;
    n &= (n-1);
}

2 判断一个数是否是2的方幂

n > 0 && ((n & (n - 1)) == 0 )

Leetcode 231

public class Solution {
    public boolean isPowerOfTwo(int n) {
        int count = 0;
        while(n>0){
            count += n&1;
            n>>=1;
        }
        return count ==1;
    }

}

如 n&1 就是n变成二进制,然后和1作(&)与运算,同时有1则产生1

如 n&(n-1) 假如n=5 则5&4 ==》101 & 100 = 1


版权声明:本文为sipherhern原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。