parameters: (self, a, b)
return_statement: return a if a <= MAX else ~(a ^ mask)
docstring: :type a: int
          :type b: int
          :rtype: int
docstring_summary: :type a: int
          :type b: int
          :rtype: int
docstring_tokens: : type a : int : type b : int : rtype : int
function: def getSum2(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:
              # ^ 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)
function_tokens: def getSum2 ( self , a , b ) : # 32 bits integer max MAX = 0x7FFFFFFF # 32 bits interger min MIN = 0x80000000 # mask to get last 32 bits mask = 0xFFFFFFFF while b : # ^ 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 )