0
点赞
收藏
分享

微信扫一扫

获取一个整数在内存中的1的个数

楠蛮鬼影 2022-06-09 阅读 52

输入一位整数,获取该数在内存中的1的个数,下面有三种方法。

方法一:

int count_bit_one(unsigned int n)
{
    int count = 0;
    while(n)
    {
        if(n % 2 == 1)
        {
            count++;
        }
        n = n / 2;
    }
    return count;
}
int main()
{
    //统计一个数的二进制表示中有几个1
    int a = 0;
    int count = 0;
    scanf("%d", &a);
    count = count_bit_one(a);
    printf("%d\n", count);
    return 0;
}

方法二:

int count_bit_one(int a)
{
    int i = 0;
    int count = 0;
    for(i=0; i<32; i++)
    {
        if(((a >> i) & 1) == 1)
            count ++;
    }
    return count;
}
int main()
{
    //统计一个数的二进制表示中有几个1
    int a = 0;
    int count = 0;
    scanf("%d", &a);
    count = count_bit_one(a);
    printf("%d\n", count);
    return 0;
}

方法三:

int count_bit_one(int a)
{
    int count = 0;
    while(a)
    {
        a = a & (a-1);// a&(a-1)让二进制中最右边的1消失
        count++;
    }
    return count;
}
int main()
{
    //统计一个数的二进制表示中有几个1
    int a = 0;
    int count = 0;
    scanf("%d", &a);
    count = count_bit_one(a);
    printf("%d\n", count);
    return 0;
}

这里最推荐的是方法三,效率高。

举报

相关推荐

0 条评论