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

如何在Python3中逐个翻转二进制数的单一位(0变1、1变0)?

二进制位逐个翻转的正确实现方法

问题分析

核心问题是每次翻转后未基于原始二进制串操作,而是在修改后的结果上继续翻转,导致首位被修改后后续操作都基于错误的基础值,最终输出不符合预期。

正确实现代码

binary = "1010"
# 遍历每一位的索引
for i in range(len(binary)):
    # 每次从原始字符串生成新列表,避免之前的修改影响后续操作
    bits = list(binary)
    # 翻转当前位:0变1,1变0
    bits[i] = '1' if bits[i] == '0' else '0'
    # 转换为字符串并输出
    print(''.join(bits))

输出结果

0010
1110
1000
1011

错误原因说明

你之前的代码大概率复用了同一个列表,示例如下:

# 错误示例(导致你得到的输出)
binary = "1010"
bits = list(binary)
for i in range(len(bits)):
    bits[i] = '1' if bits[i] == '0' else '0'
    print(''.join(bits))
    # 未将bits恢复为原始状态

这种写法中,第一次翻转第一位后列表变为['0','0','1','0'],第二次翻转第二位时是在这个修改后的列表上操作,得到['0','1','1','0'],后续操作也基于前一次结果,自然无法得到正确输出。

内容的提问来源于stack exchange,提问作者Emily Thompson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:42:19