题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
异或:求各位之和
与:计算进位
Python代码
1 # -*- coding:utf-8 -*-
2 class Solution:
3 def Add(self, num1, num2):
4 # write code here
5 pos_sum = num1
6 while num2:
7 pos_sum = (num1^num2)& 0xffffffff
8 num2 = ((num1&num2)<<1)& 0xffffffff
9 num1 = pos_sum
10 if pos_sum <= 0x7fffffff:
11 return pos_sum
12 else:
13 return ~(pos_sum ^ 0xffffffff)
14
15
16
note:
0xffffffff表示-1 1111 1111 1111 1111 1111 1111 1111 1111(第一个1是符号位)
0x7fffffff表示最大正数,0111 1111 1111 1111 1111 1111 1111 1111(0是符号位)
对0取反为-1,对1取反为-2