首页 > 编程语言 > 详细

算法 计算一个数转换为二进制后有多少个1

时间:2019-10-08 18:59:55      阅读:177      评论:0      收藏:0      [点我收藏+]

输入:

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.

算法 计算一个数转换为二进制后有多少个1

原文:https://www.cnblogs.com/liuruoqian/p/11636390.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!