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

来源:互联网 发布:isis组织 知乎 编辑:程序博客网 时间:2024/04/28 23:43

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

0 0
原创粉丝点击