2-9 在求对二的补码时,表达式 x &= (x – 1)可以删除 x 中最右边值为 1 的 一个二进制位,用这一方法重写 bitcount 函数,以加快其执行速度

发布时间 2023-07-29 10:33:38作者: 语巫

Archlinux

GCC 13.1.1  20230429

2023-07-29 10:29:56 星期六

 


点击查看代码
#include<stdio.h>
#include<stdint.h>


int bitcount( uint8_t x )
{
    int count = 0;

    while( x != 0 )
    {
        x &= x-1;
        count ++;
    }

    return count;
}


int main()
{
    int c_in = 0;

    scanf("%d", &c_in);
    
    printf("%d\n", bitcount( c_in ) );
    


    return 0;
}


 


运行截图:

image

输出正确。

 


小白刚学习C语言,代码质量不高,欢迎评论。