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

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

目录

​编辑

回顾

十进制转换为二进制

十进制转换为任意进制


回顾

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

十进制转换为二进制

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

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

数据结构与算法-(6)---栈的应用-(2)进制转换_第1张图片数据结构与算法-(6)---栈的应用-(2)进制转换_第2张图片

数据结构与算法-(6)---栈的应用-(2)进制转换_第3张图片 

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))

运行结果:

数据结构与算法-(6)---栈的应用-(2)进制转换_第4张图片 

十进制转换为任意进制

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

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

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

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

数据结构与算法-(6)---栈的应用-(2)进制转换_第5张图片

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

数据结构与算法-(6)---栈的应用-(2)进制转换_第6张图片 十进制转换为十六以下任意进制:代码

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))

运行结果:

数据结构与算法-(6)---栈的应用-(2)进制转换_第7张图片

数据结构与算法-(6)---栈的应用-(2)进制转换_第8张图片 

你可能感兴趣的:(数据结构与算法,python学习,python,开发语言,算法,数据结构,线性回归,学习)