1.问题描述:
给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
说明
a和b都是 32位
整数么?
- 是的
我可以使用位运算符么?
- 当然可以
2.样例:
如果 a=1
并且 b=2
,返回3
3.代码:
对数进行按bit位进行运算,需要使用到位运算符,总结如下:
具体思想:
1)忽略进位对位数字相加,做异或运算
2)记录进位,做与运算后再左移1位
3)进位值与第一步结果相加
class Solution:
"""
@param: a: An integer
@param: b: An integer
@return: The sum of a and b
"""
def aplusb(self, a, b):
# write your code here
if a * b < 0 and abs(a)==abs(b):
return 0
else:
while b!=0:
sum = a ^ b
carry = (a & b) <<1
a = sum
b= carry
return a