#include <stdio.h>
/*
** 这个函数返回参数值中值为 1 的位的个数。
*/
int count_one_bits0(unsigned value)
{
int ones;
for (ones = 0; value != 0; value = value >> 1)
{
if (value % 2 != 0)
ones = ones + 1;
}
return ones;
}
int count_one_bits1(unsigned value)
{
int ones;
for (ones = 0; value != 0; value >>= 1)
{
if (value & 1)
ones += 1;
}
return ones;
}
int main(int argc, char *argv[])
{
int temp = 32;
int temp2 = -32;
printf("%d %d\r\n", count_one_bits0(3), count_one_bits0(4));
printf("%d %d\r\n", count_one_bits0(15), count_one_bits0(16));
printf("%d %d\r\n", count_one_bits1(3), count_one_bits1(4));
printf("%d %d\r\n", count_one_bits1(15), count_one_bits1(16));
}
/**
* 编译:gcc -o test test.c
* 运行:./test
* 结果
* 2 1
* 4 1
* 2 1
* 4 1
*/
C语言-测试一个整数中有多少个1
最新推荐文章于 2022-08-07 15:39:22 发布
这篇博客展示了两个C语言函数,count_one_bits0和count_one_bits1,用于计算无符号整数中1的个数。通过位移操作,这两个函数迭代地检查每个二进制位,统计值为1的位数。在提供的测试用例中,两个函数都正确地返回了预期结果。
2431

被折叠的 条评论
为什么被折叠?



