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

    一般把十进制转化为二进制是除于2.但是除法的效率比移位运算远低的多。所以在实际编程中尽可能用移位运算代替乘除。

    同样要考虑到负数移位的情况下会出现无限循环。

    /*
    剑指offer面试题10
    当输入的值是负数的时候。例如-2,其结果为31.
    因为int是占4字节,1个字节位。
    */
    #include <iostream>
    
    using namespace std;
    
    int BinaryOperation(int n){
        int flag = 1;
        int count = 0;
        while(flag){
            if(flag & n){
                count++;
            }
            flag = flag << 1;
        }
    
        return count;
    }
    
    /*
    更流弊的方法,不需要临时变量。拿下offer就靠她了。
    */
    /*
    int BinaryOperation(int n){
    
        int count = 0;
        while(n){
           ++count;
           n = n & (n-1);
        }
    
        return count;
    }
    */
    
    int main()
    {
        int n;
        cin >> n;
    
        int result = BinaryOperation(n);
    
        cout << result;
        return 0;
    }
  • 相关阅读:
    JavaScript操作DOM对象
    QTP(13)
    QTP(12)
    QTP(11)
    QTP(10)
    QTP(9)
    QTP(8)
    QTP(7)
    QTP(6)
    QTP(5)
  • 原文地址:https://www.cnblogs.com/wn19910213/p/3719144.html
Copyright © 2011-2022 走看看