C++用栈实现进制转换
时间: 2024-10-21 18:14:32 浏览: 66
在C++中,我们可以使用栈数据结构来实现不同进制之间的转换,特别是将十进制数转换为其他进制数,如二进制、八进制或十六进制。这种方法通常适用于手动编写转换过程,比如从十进制到二进制。
1. **步骤**:
- 初始化一个空栈,用于存储结果的每一位。
- 定义一个循环,循环次数取决于原始数字的位数。
- 每次循环中,取当前数字除以目标基数(例如2、8或16),得到商和余数。
- 将余数压入栈,因为它是最低有效位。
- 重复此过程,直到商为0。
- 从栈顶开始,依次弹出每个元素,并将其连接起来形成新的字符串表示目标进制的数字。
2. **代码示例(二进制转十进制)**:
```cpp
void decimalToBinary(int decimal) {
stack<int> binaryStack;
while (decimal > 0) {
binaryStack.push(decimal % 2);
decimal /= 2;
}
// 反转栈的内容并输出
while (!binaryStack.empty()) {
cout << binaryStack.top();
binaryStack.pop();
}
}
```
3. **转换其他进制类似**,只需改变计算时的目标基数,比如八进制使用`decimal / 8`,十六进制使用`decimal / 16`。
阅读全文