You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现无尾随0的正整数反转二进制输出?程序问题求助

解决反转二进制转换中的尾随0问题

你的代码核心问题出在除法操作和循环终止逻辑上,导致循环无法正常停止,进而输出大量不必要的尾随0。

问题代码

import math
integer = int(input())

while integer > 0:
    x = integer % 2
    print(int(math.floor(x)), end='')
    integer = integer / 2

问题分析

  1. 使用/做除法会返回浮点数,比如12经过几次运算后会变成1.5、0.75、0.375…这些值始终大于0,导致循环无限执行,不断输出0。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:15:57