仅由0和1构成的数组模拟二进制加法运算的实现方法
实现思路
你要的效果本质是模拟8位二进制数每次加1的进位逻辑,操作核心是从数组最右端(对应二进制最低位)开始计算,处理进位即可。
完整实现代码
# 初始化8位二进制数组 binary_array = [0, 0, 0, 0, 0, 0, 0, 0] def add_one(arr): carry = 1 # 每次执行加1操作,初始进位为1 # 从最后一位(最低位)向前遍历 for i in range(len(arr)-1, -1, -1): current_sum = arr[i] + carry if current_sum == 2: # 满2进1,当前位设为0,进位保持1 arr[i] = 0 carry = 1 else: # 无进位,直接更新当前位,结束循环 arr[i] = current_sum carry = 0 break # 所有位遍历完仍有进位,说明超出8位二进制最大值(255) if carry == 1: print("当前数组已达8位二进制最大值,加1溢出")
测试验证
按如下方式调用即可匹配你给出的示例效果:
# 第1次加1 add_one(binary_array) print(binary_array) # 输出:[0, 0, 0, 0, 0, 0, 0, 1] # 第2次加1 add_one(binary_array) print(binary_array) # 输出:[0, 0, 0, 0, 0, 0, 1, 0] # 第3次加1 add_one(binary_array) print(binary_array) # 输出:[0, 0, 0, 0, 0, 0, 1, 1]
如果需要循环执行多次加1操作,直接套循环调用add_one函数即可。
内容的提问来源于stack exchange,提问作者Bilkent Ogrencisi
相关产品推荐
相关产品推荐

