鱼C论坛

 找回密码
 立即注册
查看: 2672|回复: 4

十进制转二进制的一个小问题

[复制链接]
发表于 2017-1-9 18:24:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 cc9200 于 2017-1-9 18:29 编辑

2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
1.        def Dec2Bin(dec):
2.            temp = []
3.            result = ''
4.            
5.            while dec:
6.                quo = dec % 2
7.                dec = dec // 2
8.                temp.append(quo)
9.       
10.            while temp:
11.                result += str(temp.pop())
12.            
13.            return result
14.       
15.        print(Dec2Bin(62))
16   111110



这是小甲鱼那个课程的课后题,代码没问题,实现的结果也是对的,但是有一点想不通:
先余出来的不是最小位吗?怎么放到左边去了?最后确定不需要反转一下?
例如:
789=1100010101(B)
789/2=394  余1 第10位
394/2=197 余0 第9位
197/2=98   余1 第8位
98/2=49    余0 第7位
49/2=24   余1 第6位
24/2=12   余0 第5位
12/2=6    余0 第4位
6/2=3      余0 第3位
3/2=1      余1 第2位
1/2得0     余1 第1位



result += str(temp.pop())
这一行应该改成
result=str(temp.pop())+result
才是对的
关键是返回的结果居然是对的,我就想问问,哪里错了?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-1-9 18:26:17 | 显示全部楼层
余出来的数字,从下往上排才是二进制的 结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-9 18:27:32 | 显示全部楼层
第二个循环不就是干这事的么?……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-18 13:36:28 | 显示全部楼层
result += str(temp.pop())
这个语句还是有点不了解?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-18 13:37:20 | 显示全部楼层
请问你知道了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 23:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表