算法 计算一个数转换为二进制后有多少个1
输入:
5 101
输出:
2 含有2个1
思路:输入数据对2取余,整取不含1,反之含1
#include <iostream>
using namespace std;
int Conver(int num)
{
int count = 0;
while (num)
{
if (num % 2 != 0)
{
count++;
}
num /= 2;
}
return count;
}
int main()
{
int a;
int count = 0;
cin >> a;
count = Conver(a);
cout << count << endl;
return 0;
}
拓展:如果知道原来的数是二进制的话直接统计就最简单了,使用移位操作
int number = 5;
unsigned int c = 0;
for (c = 0; number; number >>= 1) {
cout << number<<endl;
c += number & 1;
}
cout << c << endl;
>> 5
2
1
2
按位与:5与1 按位与操作
十进制 5 2 1
二进制 101 010 001
1的二进制 001 001 001
与结果 001 000 001
与结果相加得统计1的个数为2.