本关任务:补充函数bitCount(),统计x的二进制表示中1的数量,将结果return返回。 操作符使用数量限制:40 测试说明 平台会对你编写的代码进行测试: 测试输入:5 预期输出:2 ,使用尽量少的操作符,写出C代码
时间: 2024-10-18 21:23:59 浏览: 27
C语言实现二进制数据转换为十进制数据
本关任务需要编写一个名为`bitCount()`的C语言函数,用于计算整数`x`的二进制表示中1的个数。由于操作符使用数量有限,我们需要巧妙地利用位运算技巧来减少操作。这里是一个简单的实现方案,使用了按位与和左移运算符:
```c
unsigned int bitCount(unsigned int x) {
unsigned int count = 0;
while (x != 0) {
count += x & 1; // 如果最低位为1,则count加1
x >>= 1; // 将x向右移动一位,去掉最低位
}
return count;
}
// 测试示例
int main() {
printf("%d\n", bitCount(5)); // 预期输出:2
return 0;
}
```
在这个实现中,通过不断地检查`x`的最低位(`x & 1`),如果为1则`count++`,然后通过`x >>= 1`移除最低位,直到`x`变为0为止。这种方法非常高效,因为它仅用了两个基本的位操作。
阅读全文