leetcodeのpython解を理解するための助けが必要です。371. "Sum of Two Integers"。私はhttps://discuss.leetcode.com/topic/49900/python-solution/2が最も投票されたPythonソリューションであることを発見しましたが、問題を理解しています。Pythonで "+"演算子を使用しない2つの整数の和
- "%MASK"の使用方法と "MASK = 0x100000000"の使い方を理解するにはどうすればよいですか?
- 「〜((%MIN_INT)^ MAX_INT」を理解する方法?
- 合計がMAX_INTを超えると、関数は負の値を叫びます(たとえばgetSum(2147483647,2)= -2147483647)。間違っていませんか?
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)
ここでの規定は何ですか?ビット演算子と '%'のみ使用できますか? – mwm314
ビット演算子で '%'演算子を使って加算を実装するのは、ちょっとばかげています。 – chepner
@ mwm314はい、それは正しいです。タイトルが更新されました。 – user1269298