第17讲动动手,
本帖最后由 仙子追随者 于 2020-2-11 09:48 编辑编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。
def Dec2Bin(dec):
temp = []
result = ''
while dec:
quo = dec % 2
dec = dec // 2
temp.append(quo)
while temp:
result += str(temp.pop())
return result
print(Dec2Bin(62))
完全看蒙了,请大神给讲解一下 本帖最后由 SHRS23 于 2020-2-11 10:49 编辑
首先你要知道十进制转换为二进制用笔算怎么算,也就是题目里说的除2取余法
然后找个数(小一点10左右)用纸笔模拟一下程序就明白了
while dec:
quo = dec % 2
dec = dec // 2
temp.append(quo)
这里quo就是每次除2得到的余数,也是转换为二进制的每一位,把它加入到列表temp中
dec 是之前的dec(上一轮循环中的dec)除2的商,是被转换的十进制数“未除尽”的部分
存储到dec中一直除2,直到得0的时候说明二进制转换完了。
后面的pop()是把temp列表倒序输出,因为先存进列表的是二进制的低位(比如十进制中的个十百千,个位就是低位)
最后存进去的是高位,输出的时候倒序成高位在前低位在后
补充一张手算二进制的过程,横线上是普通竖式除法与短除法的对应关系
横线下是以62为例计算二进制
SHRS23 发表于 2020-2-11 10:32
首先你要知道十进制转换为二进制用笔算怎么算,也就是题目里说的除2取余法
然后找个数(小一点10左右) ...
看明白了,非常感谢大神
页:
[1]