numberof1inbinary

面试题:二进制中1的个数

题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。

思路1:举个例子进行说明。对于任何一个数字,和1进行与运算,判断得到的结果。设置一个count进行技术,如果结果与运算得到的结果为1,那么count就加1,每计算此意,1就向向左移动一位,直到完成所有的计算,最后得到的count值就是输出。

count
1
1
1 1
1 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
using namespace std;
int Numberof1_solution1(int n)
{
int count = 0;
unsigned int flag = 1;
while(flag)
{
if(n & flag)
count++;
flag = flag << 1;
}
return count;
}

思路2:举个例子进行说明。对于任何一个数字n,和n-1进行与运算

1
2
3
4
5
6
7
8
9
10
11
int Numberof1_solution2(int n)
{
int count = 0;
while(n)
{
++count;
n = (n-1) & n;
}
return count;
}
1
2
3
4
5
6
7
int main()
{
cout<<Numberof1_solution1(11)<<endl;
cout<<Numberof1_solution2(11)<<endl;
return 0;
}
-------------本文结束感谢您的阅读-------------
很有帮助,打赏感谢!
0%