题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)
输入为 非空 字符串且只包含数字 1 和 0
python解法
class Solution:
def addBinary(self, a: str, b: str) -> str:
x,y = int(a,2),int(b,2)
while y:
answer = x^y
carry = (x & y) << 1
x,y = answer,carry
return bin(x)[2:]
注:
int(a,2):将字符串a转为二进制数据
x^y :按位异或运算符:当两对应的二进位相异时,结果为1
x & y:按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
<< :左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0
bin() :返回一个整数 int 或者长整数 long int 的二进制表示
总结
第一次循环
第二次循环
第三次循环
运算结果
bin(x) = ‘0b100’
bin(x)[2:] = ‘100’