乐闻世界logo
搜索文章和话题

C ++ - Decimal to binary converting

4 个月前提问
2 个月前修改
浏览次数27

1个答案

1

在C++中,转换十进制数到二进制数的常用方法是使用位操作或者更直观的除以2的方法。下面我将详细解释这两种方法,并提供代码示例。

方法1:使用位操作(位移和位与)

这种方法利用位操作直接从整数中提取二进制位。具体步骤如下:

  1. 判断整数的每一位是否为1,从最高位到最低位进行。
  2. 使用位与操作(&)和位移操作(>>)来检查每一位。

以下是相应的C++代码示例:

cpp
#include <iostream> #include <bitset> // 用于输出二进制形式 void printBinary(int num) { for (int i = 31; i >= 0; i--) { int k = num >> i; if (k & 1) std::cout << "1"; else std::cout << "0"; } } int main() { int number = 9; std::cout << "二进制形式: "; printBinary(number); std::cout << "\n"; return 0; }

在这段代码中,我们将一个整数右移i位,并与1进行位与操作来检查最后一位是0还是1,然后输出对应的结果。

方法2:除以2法

这种方法通过不断地将数字除以2并记录余数,然后将得到的余数反转来获得二进制表示。具体步骤如下:

  1. 将数字除以2。
  2. 记录余数。
  3. 取商为新的数字。
  4. 重复上述步骤直到数字变为0。
  5. 将记录的余数反转,得到二进制形式。

以下是相应的C++代码示例:

cpp
#include <iostream> #include <string> #include <algorithm> // 用于reverse函数 std::string decimalToBinary(int num) { std::string result; while (num > 0) { result += (num % 2 == 0 ? "0" : "1"); num /= 2; } reverse(result.begin(), result.end()); // 反转字符串 return result; } int main() { int number = 9; std::cout << "二进制形式: " << decimalToBinary(number) << "\n"; return 0; }

在这段代码中,我们不断地将数字除以2并记录余数,然后使用 std::reverse 函数将字符串反转,以获得正确的二进制表示。

这两种方法都可以有效地将十进制数转换为二进制数,选择哪一种取决于具体的应用场景和个人偏好。使用位操作通常更高效,但使用除以2的方法在逻辑上可能更直接易懂。

2024年7月4日 11:22 回复

你的答案