不支持进位的二进制加法
创始人
2025-01-11 22:31:34
0次

不支持进位的二进制加法可以通过使用逐位相加的方式来实现。首先,我们将两个二进制数对齐,然后从最低位开始逐位相加,不考虑进位。如果两个对应位的数字相加结果为0或1,则直接将结果添加到结果字符串中。如果结果为2,则将结果设置为0。最后,将结果字符串反转得到最终的加法结果。

以下是一个示例代码:

def add_binary(a, b):
    # 对齐两个二进制数
    max_length = max(len(a), len(b))
    a = a.zfill(max_length)
    b = b.zfill(max_length)

    carry = 0
    result = ""

    # 逐位相加
    for i in range(max_length-1, -1, -1):
        bit_sum = int(a[i]) + int(b[i]) + carry
        if bit_sum == 0 or bit_sum == 1:
            result = str(bit_sum) + result
            carry = 0
        elif bit_sum == 2:
            result = "0" + result
            carry = 1

    if carry == 1:
        result = "1" + result

    return result

示例运行:

a = "1010"
b = "1111"
print(add_binary(a, b))  # 输出: 11001

此方法可以在O(n)时间复杂度内完成二进制数的加法,其中n是两个输入二进制数的最大长度。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...