题目:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
分析:
将数字和1先做与运算,然后将1右移一位,现在是判断数字的第二位是不是1,这样循环的做下去即可。也可以转换成字符串再统计1的个数。
程序:
C++
class Solution {
public:
int NumberOf1(int n) {
int flag = 1;
int res = 0;
while(flag){
if(n & flag)
res++;
flag = flag << 1;
}
return res;
}
};
Java
public class Solution {
public int NumberOf1(int n) {
int flag = 1;
int res = 0;
while(flag != 0){
if((n & flag) != 0)
res++;
flag = flag << 1;
}
return res;
}
}