不用加减乘除做加法

来源:互联网 发布:你瞒我瞒网络链接 编辑:程序博客网 时间:2024/06/05 15:57

题目描述

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


找到了一个非常棒的解析,关于这个问题的

a+b = (a^b) + (a&b)*2 ,然后将 a^b 作为新的a, (a&b)*2作为新的b,直到b=0
用一个例子来证明这个公式:
假设:
a    =  00011011
b    =  00111110
那么
a^b=  00100101
a&b= 00011010
用a+b-a^b 那么 a和b变成 (如果a^b中第三位为1,那么说明a和b中只有一个第三位为1,将a或b的那个第三位1去掉)
a    = 00011010
b    = 00011010
正好a和b都等于a&b
这就证明出了 a+b-(a^b) = (a&b)*2

# -*- coding:utf-8 -*-class Solution:    def Add(self, num1, num2):        # write code here        return (num1 ^ num2) + (num1 & num2) * 2;


0 0
原创粉丝点击