c++中如何把一个十进制整数转换成二进制然后统计其中1的个数

在C++中,你可以通过位操作将一个十进制整数转换为二进制表示,并统计其中1的个数。以下是一个详细的解决方案,包括代码示例和解释:

代码示例

cpp
#include <iostream> #include <bitset> int countOnesInBinary(int n) { int count = 0; while (n > 0) { count += n & 1; // 检查最低位是否为1 n >>= 1; // 右移一位 } return count; } int main() { int num; std::cout << "Enter an integer: "; std::cin >> num; std::bitset<32> binary(num); // 将整数转换为二进制表示,假设整数在32位以内 std::cout << "Binary representation: " << binary << std::endl; int count = countOnesInBinary(num); std::cout << "Number of 1s in binary: " << count << std::endl; return 0; }

解释

  1. countOnesInBinary函数

    • 使用n & 1检查最低位是否为1。如果是1,则计数器count增加1。
    • 使用n >>= 1n右移一位,继续检查下一位。
    • 重复以上步骤直到所有位都被检查完毕。
  2. std::bitset

    • 用于将整数转换为二进制表示。std::bitset<32>假设整数在32位以内,支持大多数常见的整数大小。如果你需要处理更大的整数,可以调整位数。
  3. main函数

    • 从用户输入获取一个整数。
    • 使用std::bitset将该整数转换为二进制并打印。
    • 调用countOnesInBinary函数统计二进制中1的个数并打印结果。

总结

通过位操作和std::bitset类,你可以轻松地将一个十进制整数转换为二进制表示,并统计其中1的个数。此方法适用于大多数常见的整数大小,并可以通过调整位数来处理更大的整数。

关键字

C++,十进制整数,二进制转换,位操作,统计1的个数,std::bitset,右移操作,最低位检测