求整数二进制表示中比特为1的个数


main函数部分

#include 

int count_ones(int num);

int main(void)
{
    int num;

    scanf("%d", &num);
    printf("%d\n", count_ones(num));
    return 0;
}

方法一:

int count_ones(int num)
{
    if (num == 0)
        return 0;
    return count_ones(num & num - 1) + 1;
}

方法二:

int count_ones(int num)
{
    int count = 0;

    while (num != 0)
    {
        if (num & 1)
            count++;
        num = num >> 1;
    }

    return count;
}

相关