Sum of Two Integers

Problem: Sum of Two Integers

We can use XOR to get the sum without carries and use AND << 1 to get the carries and then sum them up together. Since in Python, integers can be longer than 32 bits and the symbol bit is not on the correct position, we need to use a mask to get what we want.

Code in Python:

class Solution(object):
    def getSum(self, a, b):
        """
        :type a: int
        :type b: int
        :rtype: int
        """
        # 32 bits integer max
        MAX = 0x7FFFFFFF
        # 32 bits interger min
        MIN = 0x80000000
        # mask to get last 32 bits
        mask = 0xFFFFFFFF
        while b != 0:
            # ^ get different bits and & gets double 1s, << moves carry
            a, b = (a ^ b) & mask, ((a & b) << 1) & mask
        # if a is negative, get a's 32 bits complement positive first
        # then get 32-bit positive's Python complement negative
        return a if a <= MAX else ~(a ^ mask)

results matching ""

    No results matching ""