剑指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; }