算法 计算一个数转换为二进制后有多少个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.

猜你喜欢

转载自www.cnblogs.com/liuruoqian/p/11636390.html