python3 利用栈 将十进制转换为二进制,及十六以下任意进制
发布时间:2020-12-17 17:02:34 所属栏目:Python 来源:网络整理
导读:python3 利用栈 将十进制转换为二进制 十进制转换二进制代码逻辑 十进制转换为二进制,采用的“除以2求余数”的算法。(将整数不断除以2,每次得到余数就是由低到高的二进制位) 如100转换为二进制: 100/2=50....(余数为0);?50/2=25.....(余数为0);?25/2=12
python3 利用栈 将十进制转换为二进制 十进制转换二进制代码逻辑
如100转换为二进制: 100/2=50....(余数为0);? 50/2=25.....(余数为0);? 25/2=12.....(余数为1);? 12/2=6......(余数为0);? 6/2=3.......(余数为0);? 3/2=1.......(余数为1);? 1/2=0.......(余数为1);? 所以100的二进制表示形式为1100100; 十进制转换为二进制代码如下: class?Stack(): ????def?__init__(self): ????????self.items=[] ????#?判断栈是否为空 ????def?isEmpty(self): ????????return?len(self.items)==0 ????#?把数据放入栈 ????def?push(self,item): ????????self.items.append(item) ????#?从栈中取数据 ????def?pop(self): ????????return?self.items.pop() ????#?栈顶 ????def?peek(self): ????????return?self.items[-1] ????#?栈的长度 ????def?size(self): ????????return?len(self.items) def?divideBy2(desc_number): ????sobj=Stack() ????while?desc_number>0: ????????#?求余数 ????????rem=desc_number?%?2 ????????sobj.push(rem) ????????#?整数数 ????????desc_number=desc_number?//?2 ????bin_string?=?'' ????while?not?sobj.isEmpty(): ????????bin_string?+=?str(sobj.pop()) ????return?bin_string if?__name__?==?'__main__': ????print(divideBy2(220)) ????print(divideBy2(42)) 十进制转换十六以下任意进制代码 更多进制转换规律:
class?Stack(): ????def?__init__(self): ????????self.items=[] ????#?判断栈是否为空 ????def?isEmpty(self): ????????return?len(self.items)==0 ????#?把数据放入栈 ????def?push(self,item): ????????self.items.append(item) ????#?从栈中取数据 ????def?pop(self): ????????return?self.items.pop() ????#?栈顶 ????def?peek(self): ????????return?self.items[-1] ????#?栈的长度 ????def?size(self): ????????return?len(self.items) ???????? def?baseCouverter(desc_number,base): ????#?利用空间换取时间,提前存储16进制以内用到的数字 ????digits='123456789ABCDEF' ????sobj?=?Stack() ????while?desc_number?>?0: ????????#?求余数 ????????rem?=?desc_number?%?base ????????sobj.push(rem) ???????? ????????#?整数数 ????????desc_number?=?desc_number?//?base ????bin_string?=?'' ????while?not?sobj.isEmpty(): ????????#?获取digits索引对应的字符串 ????????bin_string?+=?str(digits[sobj.pop()]) ????return?bin_string ???? ???? if?__name__?==?'__main__': ????print(baseCouverter(123,16)) ????print(baseCouverter(42,2)) 结果: 8C 212121 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |