Suma de dos enteros sin usar el operador "+" en python
Necesita ayuda para comprender las soluciones de Python de Leetcode 371. "Suma de dos enteros". encontréhttps://discuss.leetcode.com/topic/49900/python-solution/2 es la solución de Python más votada, pero tengo problemas para entenderla.
¿Cómo entender el uso de "% MASK" y por qué "MASK = 0x100000000"?¿Cómo entender "~ ((a% MIN_INT) ^ MAX_INT)"?Cuando suma más allá de MAX_INT, las funciones gritan valor negativo (por ejemplo, getSum (2147483647,2) = -2147483647), ¿no es incorrecto?class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
MAX_INT = 0x7FFFFFFF
MIN_INT = 0x80000000
MASK = 0x100000000
while b:
a, b = (a ^ b) % MASK, ((a & b) << 1) % MASK
return a if a <= MAX_INT else ~((a % MIN_INT) ^ MAX_INT)