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