2-9 在求对二的补码时,表达式 x &= (x – 1)可以删除 x 中最右边值为 1 的 一个二进制位,用这一方法重写 bitcount 函数,以加快其执行速度
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;
}
运行截图:
输出正确。
小白刚学习C语言,代码质量不高,欢迎评论。