算法-位运算

位操作(Bit Manipulation)是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代编程语言中,情况并非如此,很多编程语言的解释器都会基本的运算进行了优化,因此我们在实际开发中可以不必做一些编译器已经帮我们做好的优化,而就写出代码本身所要表现的意思。

 

1、67. 二进制求和

https://leetcode-cn.com/problems/add-binary/

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"


示例 2:
输入: a = "1010", b = "1011"
输出: "10101"

复制代码
# 最简单就是先转为十进制相加,再转回二进制
class Solution:
    def addBinary(self, a: str, b: str) -> str:
        x, y = int(a,2), int(b, 2)
        result = bin(x + y)
        return result[2:]

# 位运算实现加法
"""
位运算表示不进位加法:
    不进位加法其实就是一个异或操作

位运算表示进位加法:
    进位加法其实就是一个与操作的结果左移一位

将 异或 得到的 不进位的值 跟 与操作左移 的值 
    再次进行 异或计算,然后再计算进位
    判断进位是否为0
        不为0则继续重复上述步骤
        为0则结束
"""
class Solution:
    def addBinary(self, a: str, b: str) -> str:
        x, y = int(a, 2), int(b, 2)
        while y:
            cur_res = x ^ y  # 不进位时的结果
            carry = (x & y) << 1  # 进位,若不为0,代表产生了进位
            x, y = cur_res, carry
        return bin(x)[2:]
复制代码

 

posted @   我用python写Bug  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示