前言:
现时兄弟们对“python将10进制转换为n进制”大体比较注重,小伙伴们都需要学习一些“python将10进制转换为n进制”的相关文章。那么小编在网摘上网罗了一些关于“python将10进制转换为n进制””的相关内容,希望兄弟们能喜欢,朋友们快快来学习一下吧!注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性。
本文阅读时间约为9分钟。
十进制与二进制
十进制是我们熟悉的逢十向高位进一位,如1+9=10。
二进制则是类似地逢二向更高位进一位,如1+1=10。
所谓“进制”,就是用多少个字符表示整数。十进制是用0~9这10个数字字符来表示整数,而二进制则是用0、1这2个数字字符来表示整数。
拿一个例子来说,(233)_{10}(表示十进制的整数233)对应的二进制整数为(11101001)_{2}(表示二进制的整数11101001)。
十进制的表示——(233)_{10}=2*10^2+3*10^1+3*10^0。
二进制的表示——(11101001)_{2}=1*2^7+1^2^6+1*2^5+0*2^4+1*2^3+0*2^2+0*2^1+1*2^0。
最右边的数字的指数为0,每向左1位的数字,其指数加1,如从右至左第2位数指数为1,从右至左第3位数指数为2,依次类推。
多少进制就是多少进制的几次幂。
十进制转换为二进制
我们经常需要在二进制和十进制之间转换。
十进制转换为二进制,采用的是“除以2求余数”的算法。将整数不断除以2,每次得到的余数就是由低到高的二进制位。
“除以2”的过程,得到的余数是从低到高的次序,而输出则是从高到低,这就需要一个东西来做“次序反转”,而栈的特性正是“反转次序”,所以栈在这里就有用武之地了。
用栈来实现就是:
class Stack: 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 binStringprint(divideBy2(42))<<<101010十进制转换为N进制
上述十进制转换为N进制的思想也可以扩展为,把十进制转换为n进制,只需要把“除以2”改为“除以N”即可。
计算机中有另外两种常用的进制,分别是八进制和十六进制。十六进制高于十进制,规定用A、B、C、D、E、F分别表示10、11、12、13、14、15。
八进制和十六进制的例子如下:
(233)_{10}=(351)_{8}=(E9)_{16}。
(351)_{8}=3*8^2+5*8^1+1*8^0。
(E9)_{16}=14*16^1+9*16^0。
如何表示八进制和十六进制
上述代码改成十进制转换为十六进制,因为十六进制高于十进制,它有ABCDEF等6个字母表示数字,所以代码中也要有相应的改变。
以下是十进制数转化为n进制数(n<=16)的代码(代码中n用base代替):
class Stack: 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 binString = "" while not remstack.isEmpty(): binString = binString + digits[remstack.pop()] return binStringprint(baseConverter(25, 2)) # 求十进制数25转换为二进制后的结果。print(baseConverter(25, 16)) # 求十进制数25转换为十六进制后的结果。。<<<1100119<<<
今天介绍的是,如何将十进制转换为二进制。更多的进制之间的转换后续会进一步介绍。
To be continued.
标签: #python将10进制转换为n进制 #数制转换数据结构算法 #数制转换数据结构算法是什么 #数制转换数据结构算法是什么类型 #数制转换栈的应用实例