
本文详解如何用python实现正整数到“逆序二进制”的转换——即按除2取余法依次获取余数(0或1),直接拼接所得序列,无需额外反转,最终输出如6→"011"的字符串结果。
本文详解如何用python实现正整数到“逆序二进制”的转换——即按除2取余法依次获取余数(0或1),直接拼接所得序列,无需额外反转,最终输出如6→"011"的字符串结果。
在Python入门编程中,“将十进制正整数转换为逆序二进制表示”是一类典型算法题,其核心在于理解除2取余法的自然输出顺序即为题目所求的“逆序”——注意:此处的“逆序”并非指对标准二进制串翻转,而是指算法本身按低位到高位(即从2⁰位开始)逐次生成比特位,因此直接收集余数即可得到题目要求的输出。
正确解法的关键有三点:
✅ 先取余,再整除:每次循环中,应先计算 number % 2 并追加到列表,再执行 number = number // 2;
❌ 避免在循环内反复 reverse():原代码中 number_list.reverse() 被置于循环体内,不仅逻辑错误(导致每次添加后都重排),还严重降低效率;
✅ 结果统一输出:待循环结束(number == 0)后再处理并打印最终结果。
以下是规范、可运行的完整代码:
number = int(input('Enter your number: '))
bits = []
while number > 0:
bits.append(number % 2)
number = number // 2
# 将数字列表转为字符串(无空格连接)
result = ''.join(str(bit) for bit in bits)
print(result)
运行示例:
输入 6 → 过程如下:
- 6 % 2 = 0,追加 → bits = [0],6 // 2 = 3
- 3 % 2 = 1,追加 → bits = [0, 1],3 // 2 = 1
- 1 % 2 = 1,追加 → bits = [0, 1, 1],1 // 2 = 0 → 循环结束
- 输出 '011' ✅
⚠️ 注意事项:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 输入必须为正整数(题目限定),代码未做异常处理,实际应用中建议增加 if number
- 若输入为 0,当前循环不执行,bits 为空列表,输出为空字符串。根据题意(“正整数”),可忽略该边界,但严谨实现可单独处理 if number == 0: print('0');
- 使用 ''.join(...) 比多次字符串拼接更高效,也比 print(*bits, sep='') 更符合“输出一个字符串”的要求。
掌握这一模式,不仅解决了本题,也为理解进制转换、栈结构(后进先出)、以及递归思想打下坚实基础。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










