# [LeetCode]#371. Sum of Two Integers

**Environment: Python 3.7**

**Key technique:** adder, Binary, 32 bit limit

Calculate the sum of two integers *a* and *b*, but you are **not allowed** to use the operator `+`

and `-`

.

**Example 1:**

**Input: **a = 1, b = 2

**Output: **3

**Example 2:**

**Input: **a = -2, b = 3

**Output: **1

**Analysis:**

Use adder to calculate a + b. We can see below example. a and b are 1 and 5. We use “and” logic and search same bit and carry it. In another way, use “xor” logical to find different bit. When the “and” can’t find any same bit, we can return the number.

**Solution:**

class Solution:

def getSum(self, a, b):mask = 0xffffffff

sum = (a ^ b) & mask

carry = a & b

while carry!=0:

a = sum

b = (carry << 1) & mask

sum = (a ^ b) & mask

carry = a & b

if sum & 0x80000000:

sum -= 0x100000000

return sum

**Submitted result:**

**Lesson learn:**

Due to Python doesn’t have 32 bit limit, we need use mask to simulate it. I don’t consider it, so I get many Time Limit Exceeded.

**Reference:**

https://www.polarxiong.com/archives/LeetCode-371-sum-of-two-integers.html