python栈应用十进制转二进制_数据结构与算法(Python版)八:栈的应用(十进制转换为二进制)...

所谓的“进制”, 就是用多少个字符来表示整数

十进制是0~9这十个数字字符,二进制是0、 1两个字符

十进制转换为二进制, 采用的是“除以2求余数”的算法

将整数不断除以2,每次得到的余数就是由低到高的二进制位

“除以2”的过程, 得到的余数是从低到高的次序, 而输出则是从高到低, 所以需要一个栈来反转次序

def divideBy2(decNumber):

remstack = Stack()

while decNumber > 0:

rem = decNumber % 2

remstack.push(rem)

decNumber = decNumber // 2

binString = ""

while not remstack.isEmpty():

binString = binString + str(remstack.pop())

return binString

print(divideBy2(42))

扩展到更多进制转换

十进制转换为二进制的算法, 很容易可以扩展为转换到任意N进制

只需要将“除以2求余数”算法改为“除以N求余数”算法就可以

主要的问题是如何表示八进制及十六进制

二进制有两个不同数字0、 1

十进制有十个不同数字0、 1、 2、 3、 4、 5、 6、7、 8、 9

八进制可用八个不同数字0、 1、 2、 3、 4、 5、 6、 7

十六进制的十六个不同数字则是0、 1、 2、 3、 4、 5、 6、 7、 8、 9、 A、 B、 C、 D、 E、 F

十进制转换为十六以下任意进制:代码

def baseConverter(decNumber, base):

digits = "0123456789ABCDEF"

remstack = Stack()

while decNumber > 0:

rem = decNumber % base

remstack.push(rem)

decNumber = decNumber // base

newString = ""

while not remstack.isEmpty():

newString = newString + digits[remstack.pop()]

return newString

print(baseConverter(25, 2))

print(baseConverter(3000, 16))

标签:Python,decNumber,二进制,remstack,rem,余数,数据结构,十进制

来源: https://blog.csdn.net/weixin_39020133/article/details/106874826

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值