输入一组正整数n,取值范围在[O,65535],请计算该数n在机内存储的二进制编码中1的个数。 输入格式: 输入多个无符号整数,以空格或换行间隔。 输出格式: 对每一个输入的整数,输出其在机内存储的二进制,用C语言写
时间: 2024-12-17 19:56:23 浏览: 57
为了计算给定正整数 n 的二进制表示中 1 的个数,你可以使用 C 语言中的位运算技巧。下面是一个简单的程序片段,它读取输入的整数并返回其中 1 的个数:
```c
#include <stdio.h>
int countBits(unsigned int num) {
int count = 0;
while (num > 0) {
count += num & 1; // 检查最低位是否有1,如果有加1
num >>= 1; // 右移一位,去掉最低位
}
return count;
}
int main() {
unsigned int n;
printf("请输入一个无符号整数(0到65535之间),按空格分隔:\n");
while (scanf("%u", &n) == 1) { // 读取输入直到遇到非数字字符
int bit_count = countBits(n);
printf("整数 %u 在二进制中 1 的个数为 %d。\n", n, bit_count);
}
return 0;
}
```
在这个程序中,`countBits` 函数使用了 `&` 运算符检查每个位,如果位是 1,则 `num & 1` 结果为 1,`count` 加一。然后通过右移操作 `num >>= 1` 来处理下一位,直到所有位都被检查过。
当你运行这个程序时,它会提示用户逐个输入无符号整数,并显示它们在二进制形式下的 1 的个数。
阅读全文
相关推荐













