劍指offer——不用加減乘除作加法

原理:ios

一、對兩個數進行異或運算,sum=num1^num2,不考慮進位。spa

二、對兩個數進行與運算,carry=(num1&num2)<<1,code

三、將sum和carry相加,循環執行。blog

注:減法,乘法和除法可使用加法的變形。io

#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;
}
相關文章
相關標籤/搜索