二进制中1的个数
作者:互联网
- 利用(n-1)&n来巧妙计算1的个数
计算n-1时,如果n的最后一位是0,则会向前一位借位,如果前一位仍是0,则继续向前借位,直到遇到第一个不为0的数,
xxxx1000
- 1
xxxx0111
与后 xxxx0000
将最右边的1变为0;
所以重复计算,循环多少次,就找到了多少个1
public int getNumber(int n){
int count = 0;
while(n!=0){
++count;
n=(n-1)&n;
}
return count;
}
标签:count,二进制,个数,一位,int,借位,计算 来源: https://www.cnblogs.com/bigsmile/p/10877530.html