用顺序栈实现非负十进制到二进制、八进制、十六进制的转换算法详细代码
时间: 2024-12-20 19:23:20 浏览: 7
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
为了将非负十进制数转换成二进制、八进制和十六进制,我们可以使用顺序栈的数据结构来逐步累加每一位的权值。这里是一个简单的Python示例代码:
首先,我们需要一个辅助函数`push_to_stack(stack, value, base)`,用于将给定数值`value`添加到`base`进制表示的栈中:
```python
def push_to_stack(stack, value, base):
while value > 0:
remainder = value % base
stack.append(remainder)
value //= base
# 主函数
def decimal_to_other_bases(decimal_num, bases=[2, 8, 16]):
result_stacks = [list() for _ in bases] # 初始化空栈列表
for base in bases:
push_to_stack(result_stacks[bases.index(base)], decimal_num, base)
# 将栈内容倒序,得到正确的数字顺序
return [''.join(map(str, reversed(stack))) for stack in result_stacks]
# 示例
decimal_num = 42
binary, octal, hexadecimal = decimal_to_other_bases(decimal_num)
print(f"Decimal {decimal_num}: Binary - {binary}, Octal - {octal}, Hexadecimal - {hexadecimal}")
```
运行这段代码,会输出十进制42分别转换为二进制、八进制和十六进制的结果。
阅读全文