|
|
发表于 2019-4-29 11:09:12
|
显示全部楼层
本帖最后由 jackz007 于 2019-8-24 11:32 编辑
中学应该学过,把一个数转化为2进制用短除法,就是对这个数不断除以 2,记录余数,直到商为 0,
把这一过程中得到的所有余数按逆序排列就是这个数的二进制结果。
以 42 为例
- dec quo
- 42
- -------------------
- 21 0
- -------------------
- 10 1
- -------------------
- 5 0
- -------------------
- 2 1
- -------------------
- 1 0
- -------------------
- 0 1
复制代码
转化后的结果就是 42 = (((((0 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0 = 101010
- def Dec2Bin(dec):
- temp = [] # 初始化列表准备存放中间结果
- result = '' # 初始化用于保存最后结果的字符串
- while dec: # 只要被除数不为零就继续循环
- quo = dec % 2 # 计算 dec 对 2 的余数
- dec = dec // 2 # 计算 dec 自除以 2
- temp.append(quo) # 把余数保存到列表 temp 中
- # 循环完成后,temp[]中保存的是逆序存放二进制结果,就是说,temp[0]是最后一个数
- while temp:
- result += str(temp.pop()) # 从 temp 列表的最后一个元素开始,把每个元素转化为字符然后拼接成字符串
- return result # 返回字符串形式的转化结果。
复制代码 |
|