我对~操作员有点困惑.代码如下:
a = 1
~a #-2
b = 15
~b #-16
Run Code Online (Sandbox Code Playgroud)
怎么~办?
我想,~a会是这样的:
0001 = a
1110 = ~a
Run Code Online (Sandbox Code Playgroud)
为什么不?
我正在寻找这个问题的解决方案:
给定两个整数
a和b,返回两个整数的和,而不使用运算符+和-。(输入限制:-1000<= a, b <=1000)
在所有这些解决方案中,我很难理解为什么这些解决方案在评估时超过 32 位最大位数~(a ^ mask)时会出现问题[请参阅下面的代码]。a0x7fffffffa + b
def getSum(self, a: int, b: int) -> int:
# 32bit mask
mask = 0xFFFFFFFF # 8Fs = all 1s for 32 bits
while True:
# Handle addition and carry
a, b = (a ^ b) & mask, ((a & b) << 1) & mask
if b == 0:
break …Run Code Online (Sandbox Code Playgroud)