题目:
输入一个整数,输出该数二进制表示中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; } }