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

原理:

1、对两个数进行异或运算,sum=num1^num2,不考虑进位。

2、对两个数进行与运算,carry=(num1&num2)<<1,

3、将sum和carry相加,循环执行。

注:减法,乘法和除法可以使用加法的变形。

#include <iostream>
using namespace std;

int add(int num1,int num2)
{
    int sum,carry;
    while(num2!=0)
    {
        sum=num1^num2;
        carry=(num1&num2)<<1;
        num1=sum;
        num2=carry;
    }
    return sum;
}

void main()
{
    cout<<add(3,4)<<endl;
}
posted @ 2014-09-06 14:31  啵啵那个臭  阅读(149)  评论(0编辑  收藏  举报