zoukankan      html  css  js  c++  java
  • 二进制中1的个数

    【问题】输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

    【思路】我们大家都知道整数在计算机中是以二进制的形式来存储的,因此对于正数或者负数都是0或1的数字组成的。且由于int型为32位,因此我们可以逐一的对每一位进行判断,只需要n & (1<<i)就可以判断第i位是否为1了!

    class Solution {
     public:
          int  NumberOf1(int n) {
              int count = 0;
              for(int i = 31;i >=0; --i){
                  if(n & (1 << i)){
                      ++count;
                  }
              }
             return count;
         }
    };

    当然也可以使用STL中的bitset(位图)来直接统计,花里胡哨的写法,只需要一句话!

    class Solution {
     public:
         int  NumberOf1(int n) {
             return bitset<32>(n).count();
         }
    };
  • 相关阅读:
    培训是一种乐趣(3)
    JAVA多线程放号器
    西游记(2)
    Swing事件处理
    西游记
    Swing普通控件
    JAVA语言的BUG?
    Swing高级控件
    JavaBean属性拷贝
    JAVA排序汇总
  • 原文地址:https://www.cnblogs.com/zhudingtop/p/11312159.html
Copyright © 2011-2022 走看看