c++给定n个数,统计他们在二进制下每个位1的个数
时间: 2024-10-06 18:02:17 浏览: 45
在C++中,给定一组整数,你可以使用位运算和循环来统计它们在二进制表示中每个位上1的个数。这里是一个简单的示例方法:
```cpp
#include <iostream>
#include <vector>
std::vector<int> countBits(const std::vector<int>& nums) {
std::vector<int> bitCounts(nums.size(), 0);
for (int num : nums) {
int count = 0;
while (num > 0) {
count += num & 1; // 如果num的最低位是1,count加1
num >>= 1; // 将num右移一位,去掉最低位
}
bitCounts[count]++; // 统计当前数字对应位为1的次数,并增加计数
}
return bitCounts;
}
int main() {
std::vector<int> numbers = {10, 15, 42, 64};
std::vector<int> result = countBits(numbers);
for (int i = 0; i < result.size(); ++i) {
std::cout << "对于数字" << numbers[i] << ",有 " << result[i] << " 个位为1.\n";
}
return 0;
}
```
这个函数`countBits`遍历输入数组的每个元素,通过逐个检查每一位并累加来计算每个数字中1的数量。最后返回的结果向量`bitCounts`保存了每个原始数值对应的每位1的个数。
阅读全文