【解题报告】lintcode365求二进制中有多少个1
题意
求一个32位整数的二进制中有多少个1解法
位运算,每次减一然后按位与,由于借位原理,当数字变为0的时候,就没有1了 例子: 5(101) 第一轮 5 - 1 = 4(100) 5 & 4 = 4(100) 第二轮 4 - 1 = 3(011) 4 & 3 = 0(000) 此时n = 0,停止,进行了2轮,所以有两个1代码
public class Solution {
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
public int countOnes(int n) {
// write your code her
int count = 0;
while(n!= 0){
count++;
n = n & (n - 1);
}
return count;
}
}; 