Python数据结构与算法-栈的应用-进制转换

举报
Aileen_0v0 发表于 2024/02/11 23:48:03 2024/02/11
【摘要】 ​ ​  🌈write in front🌈🧸大家好,我是Aileen 🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.🆔本文由Aileen_0v0 🧸 原创 CSDN首发🐒 如需转载还请通知⚠️📝个人主页:Aileen_0v0 🧸—CSDN博客🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​📣系列专栏:Aileen_0v0 🧸的数据结构与算法学习系列专...

 

 🌈write in front🌈
🧸大家好,我是Aileen 🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由Aileen_0v0 🧸 原创 CSDN首发🐒 如需转载还请通知⚠️
📝个人主页:Aileen_0v0 🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0 🧸的数据结构与算法学习系列专栏 🌸 ——CSDN博客
🗼我的格言:"没有罗马,那就自己创造罗马💫~"

目录

回顾

十进制转换为二进制

十进制转换为任意进制


回顾💫

上节我们学习了栈的应用1---括号的匹配,如果有遗忘或者感兴趣的小伙伴可以点击👉链接🔗http://t.csdnimg.cn/2ba3D

十进制转换为二进制🌻

二进制 是计算机原理最基本的概念, 作为组成计算机最基本部件的逻辑门电路,其输入和输出均仅为两种状态: 0 和 1

但十进制是人类传统文化最基本的数值概念,如果没有进制之间的转换,人们跟计算机的交互会相当困难

class Stack:#Stack---->ADT
    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)
 
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(254))

运行结果:

十进制转换为任意进制🌷

从上面的十进制转二进制我们可以拓展到更多的进制转换

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

只需要将 "除以2求余数" 算法改为 "除以N求余数"算法即可

计算机中另外常用的两种进制 : 八进制和十六进制

如何表示八进制和十六进制

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

class Stack:#Stack---->ADT
    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)
 
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(25,16))

运行结果:

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。