十进制转换问题

这篇博客介绍了如何利用栈的数据结构来实现从十进制到二进制以及其他任意进制的转换。首先创建了一个Stack类,然后通过将十进制数除以目标进制取余并压栈,最后弹栈并拼接得到转换后的进制数。示例中展示了十进制转二进制和任意进制的完整代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路分析:进制转换问题我们一般会想到除进制位数进行取余的办法,例如十进制转二进制,用数字除以2每步进行取余,取余后的结果反过来就是我们需要的答案,一般可以转换成字符串进行反转,也可以利用栈的后进先出结构进行操作,这里我们选用后面这种方法进行实现,代码如下:

class Stack(object):

    def __init__(self):
        self.__items = []

    def isEmpty(self):
        """检查栈是否为空"""
        return self.__items == []

    def push(self, item):
        """将一个元素添加到栈的顶端"""
        self.__items.append(item)

    def pop(self):
        """将栈顶端的元素移除"""
        return self.__items.pop()

    def peek(self):
        """返回栈顶端的元素"""
        return self.__items[len(self.__items) - 1]

    def size(self):
        """返回栈中元素的数目"""
        return len(self.__items)

 十进制转二进制:

import stack

def convertBinary(num):
    """十进制转二进制"""
    s = stack.Stack()
    while num > 0:
        remainder = num % 2
        s.push(remainder)
        num //= 2
    binaryNum = ''
    while s.size():
        binaryNum += str(s.pop())
    print(binaryNum)

十进制转任意进制:

import stack

def convert(num, scale):
    """十进制转任意进制"""
    s = stack.Stack()
    while num > 0:
        remainder = num % scale       # 除数取余
        s.push(remainder)           # 余数进栈
        num //= scale
    scaleNum = ''
    while s.size():
        scaleNum += str(s.pop())
    print(scaleNum)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值