|
发表于 2022-10-4 22:57:20
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2022-10-4 23:27 编辑
- def Dec2Bin(dec):
- r = '' # 需要循环累加得到结果,最终结果是字符串,所以,先把 r 初始化为空串
- while dec: # 只要 dec 不为 0 就开始(或继续)循环
- r = str(dec % 2) + r # 把 dec 除以 2 的余数转换为字符累加到 r 的开头
- dec //= 2 # dec = dec // 2 (地板除)
- return r # 反馈字符串 r
- print(Dec2Bin(512))
复制代码
至于十进制转二进制数的原理,为了形象直观,可以参考下面十进制转十进制代码的运行结果
- def Dec2Dec(dec):
- c , r = 0 , ''
- while dec:
- print('第 %d 次循环:dec = %4d' % ((c + 1) , dec) , end = '')
- r = str(dec % 10) + r
- print(' dec %% 10 = %d , dec // 10 = %3d r = %s' % ((dec % 10) , (dec // 10) , r))
- dec //= 10
- c += 1
- return r
- print(Dec2Dec(3578))
复制代码
两个代码的计算方法完全对等,不同之处只是在于这个代码是 10 进制到十进制的转换,运行结果反映了转换原理
下面是运行结果:
- D:\[00.Exerciese.2022]\Python>python x.py
- 第 1 次循环:dec = 3578 dec % 10 = 8 , dec // 10 = 357 r = 8
- 第 2 次循环:dec = 357 dec % 10 = 7 , dec // 10 = 35 r = 78
- 第 3 次循环:dec = 35 dec % 10 = 5 , dec // 10 = 3 r = 578
- 第 4 次循环:dec = 3 dec % 10 = 3 , dec // 10 = 0 r = 3578
- 3578
- D:\[00.Exerciese.2022]\Python>
复制代码 |
|