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

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

回顾💫

上节我们学习了栈的应用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))

运行结果:

目录
相关文章
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
理解并应用机器学习算法:神经网络深度解析
【5月更文挑战第15天】本文深入解析了神经网络的基本原理和关键组成,包括神经元、层、权重、偏置及损失函数。介绍了神经网络在图像识别、NLP等领域的应用,并涵盖了从数据预处理、选择网络结构到训练与评估的实践流程。理解并掌握这些知识,有助于更好地运用神经网络解决实际问题。随着技术发展,神经网络未来潜力无限。
|
1天前
|
存储 算法 关系型数据库
实验 3:图形数据结构的实现与应用
实验 3:图形数据结构的实现与应用
11 3
|
1天前
|
存储 算法
实验 2:树形数据结构的实现与应用
实验 2:树形数据结构的实现与应用
6 0
|
1天前
|
存储 NoSQL C语言
数据结构——顺序栈与链式栈的实现-2
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-2
|
1天前
|
存储 C语言
数据结构——顺序栈与链式栈的实现-1
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-1
|
1天前
|
算法 Python
利用贝叶斯算法对简单应用实现预测分类
利用贝叶斯算法对简单应用实现预测分类
6 0
|
1天前
|
机器学习/深度学习 算法 API
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
7 0
|
1天前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
1天前
|
机器学习/深度学习 算法
理解并应用机器学习算法:决策树
【5月更文挑战第12天】决策树是直观的分类与回归机器学习算法,通过树状结构模拟决策过程。每个内部节点代表特征属性,分支代表属性取值,叶子节点代表类别。构建过程包括特征选择(如信息增益、基尼指数等)、决策树生成和剪枝(预剪枝和后剪枝)以防止过拟合。广泛应用在信贷风险评估、医疗诊断等领域。理解并掌握决策树有助于解决实际问题。
|
1天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇