在C++中将十进制数转换为二进制数,可以采用以下两种常用方法:
一、除2取余法(迭代法)
基本思路
通过不断将十进制数除以2,记录每次的余数(0或1),直到商为0。将余数从下往上排列,即可得到二进制表示。
示例代码
```cpp
include using namespace std; void decimalToBinary(int n) { if (n == 0) { cout << "0"; return; } bool leadingZero = false; while (n > 0) { int remainder = n % 2; if (!leadingZero && remainder == 0) { cout << "0"; // 去掉前导零 leadingZero = true; } cout << remainder; n /= 2; } cout << endl; } int main() { int num; cout << "请输入一个十进制数: "; cin >> num; decimalToBinary(num); return 0; } ``` 二、短除法(位运算法)
基本思路
通过连续用2去除十进制数的每一位,记录每次的余数(0或1),直到商为0。将余数从下往上排列,即可得到二进制表示。
示例代码
```cpp
include using namespace std; void decimalToBinary(int n) { if (n == 0) { cout << "0"; return; } bool leadingZero = false; while (n > 0) { int remainder = n & 1; // 使用位与运算获取最低位 if (!leadingZero && remainder == 0) { cout << "0"; // 去掉前导零 leadingZero = true; } cout << remainder; n >>= 1; // 右移一位 } cout << endl; } int main() { int num; cout << "请输入一个十进制数: "; cin >> num; decimalToBinary(num); return 0; } ``` 说明
迭代法(除2取余法)适用于所有整数,通过循环计算余数并输出。
短除法(位运算法)效率更高,尤其适合处理大数,通过位运算快速获取二进制位。
两种方法均可处理负数,但需注意符号位处理(如补码表示)。
以上代码示例均基于标准C++,可在Visual Studio等开发环境中编译运行。