数据结构与算法(Python版)—栈的应用—十进制转二进制

数据结构与算法(Python版)

栈的应用
1. 十进制转二进制

二进制是计算机原理中最基本的概念
十进制是人类传统文化中最基本的数值概念
所谓”进制“就是用多少个字符来表示整数,二进制就是0~9这十个数字字符,二进制是0,1两个字符。

十进制转换为二进制,常规采用的是”除以2求余数“的算法。 ”除以2“的过程,得到的余数是从低到高的次序,而输出则是从高到低,所以需要一个栈来反转次序 。

def decimalToBinary(decimalNumber):
    tempStack = Stack()
    # 将除2余数放入栈中
    while decimalNumber > 0:
        remainder = decimalNumber % 2
        tempStack.push(remainder)
        decimalNumber = decimalNumber // 2
    # 将栈中的数据取出实现倒序
    binaryStr = ''
    while not tempStack.isEmpty():
        binaryStr += str(tempStack.pop())

    print(binaryStr)
2. 扩展到更多进制转换

十进制转换为二进制的算法,很容易就可以扩展为转换为十六以下任意N进制,只需要将”除以2求余数“改为”除以N求余数“即可

def decimalConvert(decimalNumber, n):
	# 主要处理十六进制及以下进制的表达==表示
    digits = "0123456789ABCDEF"
    tempStack = Stack()

    # 将除2余数放入栈中
    while decimalNumber > 0:
        remainder = decimalNumber % n
        tempStack.push(remainder)
        decimalNumber = decimalNumber // n
    # 将栈中的数据取出实现倒序
    convertStr = ''
    while not tempStack.isEmpty():
        convertStr += digits[tempStack.pop()]

    print(convertStr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值