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

题目描述

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

解题思路

第一步:两个数按位取亦或。获得的值为不考虑进位时的和。
第二步:两个数按位取与。获得的值为(当两个数某一位同为1时)两个数求和时需要进位的位置。每次讲该数(在代码中表示为num2)左移一位,表示进位后。
循环第一二步,直至两数的和没有进位位为止。

class Solution:
    def Add(self, num1, num2):
        while num2:
            mainPart = num1^num2
            num2 = (num1&num2)<<1
            num1 = mainPart
        return num1

猜你喜欢

转载自blog.csdn.net/u010005281/article/details/80171141
今日推荐