Loading

n & (n - 1)的用处

n & (n - 1)的用处

  • 用处:将二进制数的最后一个1的所在位变成0

  • 举例

    • 假设n = 122,二级制数为1111010
    • 那么n - 1 = 121,二进制数1111001
    • n & (n - 1) = 122 & 121 =1111010 & 1111001 = 1111000
    • 此时就把1111010的最后一位的1,也就是10变成了00
  • 原理:对于10,减1之后变成了01,刚好与10所有位相反,10 & 01 = 00

  • 使用场景:常用来计算一个数的二进制数,有多少个1

    public int bitCount(int n){
        int count = 0;
    	while(n != 0){
            //每次将最后的1转成0的时候count都加1
            n &= n-1;
            count++;
        }
        return count;
    }
    
  • 参考:

posted @ 2022-06-09 18:42  FynnWang  阅读(653)  评论(0编辑  收藏  举报