十進位制轉化為二進位制,採用的是「除以2求餘數」的演算法,就是將整數不斷除以2,每次得到的餘數就是由低到高的二進位制
這個「除以2」的過程得到的餘數是從低到高的次序,而輸出則是從高到低,所以需要乙個棧來反轉次序。
十進位制轉化為二進位制**實現:
class stack():
"""定義乙個棧"""
def __init__(self):
self.items =
def isempty(self):
return self.items() ==
def pop(self):
return self.items.pop()
def push(self, item):
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 + remstack.pop()
return binstring
如果是轉化為八進位制或十六進製制呢,簡單修改一下就可以了。
class stack():
"""定義乙個棧"""
def __init__(self):
self.items =
def isempty(self):
return self.items() ==
def pop(self):
return self.items.pop()
def push(self, item):
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def divideby(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 binstring
print(divideby(35, 8))
棧 十進位制轉化為任意制
include include define stack init size 100 define size increment 5 typedef struct 棧結構 sqstack,sqstack int stackinit sqstack s 初始化棧 int push sqstack s,...
利用棧結構計算十進位制轉化二進位制
棧的順序表示實現 include include 棧初始大小 define stack init size 100 棧的增長大小 define stackincrement 10 define overflow 0 define error 0 define false 0 define true ...
資料結構應用 十進位制二進位制轉換
棧,一種運算受限的線性表,後進先出 lifo class stack 進棧 enterstack elem 出棧 outstack 檢視棧頂元素,僅僅是檢視元素,不進行任何操作 peek 棧是否為空 isempty 清空棧 clear 棧內元素個數 size 十進位制轉換 function deci...