面试题65:不用加减乘除做加法

题目:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路:
https://blog.csdn.net/lrs1353281004/article/details/87192205
利用位运算进行加法操作,但是要注意,python的int没有溢出控制,需要与0xffffffff相与进行控制,否则会陷入死循环。

!!另外python的负数要需要求其补码才能返回

代码实现:

class Solution:
    def Add(self, num1, num2):
        #1.异或求不进位的和
        #2.与并左移求进位的结果
        #3.二者相加(直到没有进位结束)
        while(num2):
            num1,num2 = (num1^num2)&0xffffffff, ((num1&num2)<<1)&0xffffffff
        return num1 if num1 <= 0x7fffffff else ~((num1&0xffffffff)^0xffffffff)
print(Solution().Add(-1,-2))

提交结果:

你可能感兴趣的:(面试题65:不用加减乘除做加法)