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

如何将自然数转二进制时输出的c1值整合为整数并反转?

解决方案

针对你的需求,这里提供两种简单易懂的实现方式,适合编程初学者:

方法一:用字符串收集并反转(直观易理解)

原代码中每次输出的c1是二进制数的低位到高位,我们可以先把这些数字存到字符串里,最后反转字符串再转成整数,就能得到正确的二进制数:

Main_Input = int(input())

binary_digits = ""  # 初始化空字符串,用来存储二进制位
while Main_Input > 0:
    c1 = Main_Input % 2
    Main_Input = Main_Input // 2
    binary_digits += str(c1)  # 将当前二进制位转成字符串追加进去

# 处理输入为0的情况(自然数包含0),反转字符串后转成整数
final_binary = int(binary_digits[::-1]) if binary_digits else 0
print(final_binary)

步骤说明:

  1. 定义空字符串binary_digits,用来逐个存储每次计算出的二进制位;
  2. 循环中把c1转成字符串,拼接到binary_digits末尾,循环结束后它会是"低位在前、高位在后"的字符序列;
  3. 用[::-1]反转字符串,得到正确的二进制顺序,再转成整数;
  4. 增加输入为0的判断,避免空字符串转整数报错。

方法二:直接用整数构建(无需反转)

通过计算数位权重,直接把每个二进制位放到对应的位置上,不需要反转:

Main_Input = int(input())

final_binary = 0
digit_position = 0  # 记录当前二进制位的权重(10的n次方)
while Main_Input > 0:
    c1 = Main_Input % 2
    Main_Input = Main_Input // 2
    # 把当前位放到对应的数位上:比如第0位乘10^0,第1位乘10^1
    final_binary += c1 * (10 ** digit_position)
    digit_position += 1

print(final_binary)

步骤说明:

  1. 初始化final_binary为0,digit_position记录当前位的权重(从0开始,对应10的0次方);
  2. 每次计算出c1后,用c1 * (10 ** digit_position)将其放到对应的数位上,累加到final_binary中;
  3. 每循环一次,数位权重加1,确保下一个二进制位放到更高的位置。

内容的提问来源于stack exchange,提问作者Mohammad Payandeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:40:37