如何实现无尾随0的正整数反转二进制输出?程序问题求助
解决反转二进制转换中的尾随0问题
你的代码核心问题出在除法操作和循环终止逻辑上,导致循环无法正常停止,进而输出大量不必要的尾随0。
问题代码
import math integer = int(input()) while integer > 0: x = integer % 2 print(int(math.floor(x)), end='') integer = integer / 2
问题分析
- 使用
/做除法会返回浮点数,比如12经过几次运算后会变成1.5、0.75、0.375…这些值始终大于0,导致循环无限执行,不断输出0。 math.floor(x)完全多余——integer % 2的结果只能是0或1,直接打印即可。
修正后的代码
integer = int(input()) while integer > 0: print(integer % 2, end='') integer = integer // 2 # 用整数除法//代替/,保证结果为整数,循环能正常终止
测试验证
输入12时,程序执行流程:
- 12%2=0 → 输出0
- 12//2=6
- 6%2=0 → 输出0
- 6//2=3
- 3%2=1 → 输出1
- 3//2=1
- 1%2=1 → 输出1
- 1//2=0 → 循环终止
最终输出0011,正好是12的二进制1100的反转结果,无多余尾随0。
内容的提问来源于stack exchange,提问作者Adnan Yusuf
相关产品推荐
相关产品推荐

