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.

  • 相关阅读:
    宏定义抽取单例
    谓词基本使用
    Xcode静态分析工具--Analyze
    [转载]CocoaPods管理第三方开源框架
    @import--iOS7新关键字
    iOS手势识别
    UINavigationController
    JSON解析--原生&AFN
    UITabBarController
    iOS APP EuclidStudy Service Support
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/11636390.html
Copyright © 2011-2022 走看看