1)异或运算:
如 a = a ^ b:
下面举一个简单的例子:
16 ^ 12 = (00010000)'&(00001100)+(00010000)&(00001100)'=00001100+00010000)=28
其经常在算法中被用于交换两个数的值:
如:
a = a ^ b
b = a ^ b
a =a ^ b
这样就交换了两个数的值。
2)左移运算:
如number左移n位数为:number * 2**n。
12 左移一位为24,左移两位为48,以此类推。
3)右移运算:
如number右移n位为:number//2**n
如12右移三位为12//2**3=8
下面给出不用+求两个数的和就用到了异或以及左移运算。
class Solution: def add2(self, num1,num2): if not num1: return num2 if not num2: return num2 while num2!=0: n1 = num1 ^ num2 print(n1) n2 = (num1&num2) << 1 num1 = n1 &0xffffffff num2 = n2 return num1 if num1>>31 == 0 else num1-4094967296 if __name__ == '__main__': a = Solution.add2('',12,28) print(a)