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 -
使用场景:常用来计算一个数的二进制数,有多少个
1public int bitCount(int n){ int count = 0; while(n != 0){ //每次将最后的1转成0的时候count都加1 n &= n-1; count++; } return count; } -
参考:

浙公网安备 33010602011771号