求整数n的二进制数 1的个数,0的个数

  • Post author:
  • Post category:其他


#include <iostream>

// 这个只能求正整数的0的个数
int ZeroN(int n)
{
    int count = 0;
    while(n > 1)
    {
        if(0 == n%2)
            count++;
        n >>= 1;
    }
    return count;
}

// 可正可负,注意,负数是用补码存的
int OneN(int n) 
{
    int count = 0;
    while(n)
    {
        count++;
        n &= n-1;
    }
    return count;
}

int main(void)
{

    int n;
    while(std::cin >> n)
    {
        std::cout <<"ZeorN = " <<  ZeroN(n) << std::endl;
        std::cout <<"OneN = " << OneN(n) << std::endl;
        std::cout << std::endl;
    }
    return 0;
}



版权声明:本文为u011361880原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。