Count number of 1's in binary representation

后端 未结 21 2025
天涯浪人
天涯浪人 2020-11-28 01:32

Efficient way to count number of 1s in the binary representation of a number in O(1) if you have enough memory to play with. This is an interview question I found on an onli

21条回答
  •  春和景丽
    2020-11-28 02:05

    Two ways::

    /* Method-1 */
    int count1s(long num)
    {
        int tempCount = 0;
    
        while(num)
        {
            tempCount += (num & 1); //inc, based on right most bit checked
            num = num >> 1;         //right shift bit by 1
        }
    
        return tempCount;
    }
    
    /* Method-2 */
    int count1s_(int num)
    {
        int tempCount = 0;
    
        std::string strNum = std::bitset< 16 >( num ).to_string(); // string conversion
        cout << "strNum=" << strNum << endl;
        for(int i=0; i

    Usage::

        int count = 0;
    
        count = count1s(0b00110011);
        cout << "count(0b00110011) = " << count << endl; //4
    
        count = count1s(0b01110110);
        cout << "count(0b01110110) = " << count << endl;  //5
    
        count = count1s(0b00000000);
        cout << "count(0b00000000) = " << count << endl;  //0
    
        count = count1s(0b11111111);
        cout << "count(0b11111111) = " << count << endl;  //8
    
        count = count1s_(0b1100);
        cout << "count(0b1100) = " << count << endl;  //2
    
        count = count1s_(0b11111111);
        cout << "count(0b11111111) = " << count << endl;  //8
    
        count = count1s_(0b0);
        cout << "count(0b0) = " << count << endl;  //0
    
        count = count1s_(0b1);
        cout << "count(0b1) = " << count << endl;  //1
    

提交回复
热议问题