zoukankan      html  css  js  c++  java
  • 算法 计算一个数转换为二进制后有多少个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.

  • 相关阅读:
    视图和触发器
    45题的难点
    表连接、Tsql基本编程和存储过程
    五种函数、子查询和分页查询
    语句创建数据库表及增删改查
    约束
    pyhton的参数类型
    python的数组与集合
    python基础--编码
    NSIS的Push与Pop
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/11636390.html
Copyright © 2011-2022 走看看