求一个整数的二进制表示下有多少个1,比如 32 (100000),返回 1;给定 5 (101),返回 2;给定 1023 (111111111),返回 9。
当然可以一位一位的看,但是这样太慢了,更好的方式是用:n = n & (n - 1)
,这种方式 每次将 n 二进制表示下最右边的一个 1 变为 0。
int countNumofOne(int n){
int cnt = 0;
while(n != 0) {
n = n & (n - 1);
++cnt;
}
return cnt;
}