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

来源:互联网 发布:java实现用户注册登录 编辑:程序博客网 时间:2024/06/04 23:27

原理:

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


0 0