前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构与算法-(6)---栈的应用-(2)进制转换

数据结构与算法-(6)---栈的应用-(2)进制转换

作者头像
用户10920432
发布2024-01-18 17:05:16
1040
发布2024-01-18 17:05:16
举报
文章被收录于专栏:Python数据结构与算法

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

十进制转换为二进制🌻

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

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

代码语言:javascript
复制
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求余数"算法即可

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

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

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

代码语言:javascript
复制
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))

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 十进制转换为二进制🌻
  • 十进制转换为任意进制🌷
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档