剑指offer:不用加减乘除做加法

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

位运算
参考自牛客网讨论

python位运算有坑,0xFFFFFFFF理解参考:剑指offer-[编程题]不用加减乘除做加法(python2实现及解析)

# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        while num2!=0:
            temp=(num1^num2)&0xFFFFFFFF#做异或操作相当于二进制相加但不计算进位
            num2=((num1&num2)<<1)&0xFFFFFFFF#做与操作相当于计算进位值再左移一位
            num1=temp
        return num1 if num1<=0x7FFFFFFF else ~(num1^0xFFFFFFFF)

你可能感兴趣的:(剑指offer刷题)