首页 > 代码库 > 不用+、-、×、÷数字运算符做加法

不用+、-、×、÷数字运算符做加法

1)使用位运算,sum1=a^b 相当于不进位的加法,因为0+1=1.1+0=1.1+1=0(因为不进位)0+0=0 正好是或运算

2)sum2=(a&b)<<1,相当于算进位的数,因为只有1+1时进位

3)结果就是sum1+sum2,当然如果这个加法还需要进位就执行第四步

4)重复上面的过程一直到进位数(a&b)<<1为零,也就是不需要进位为止

#include<iostream>
#include<stdio.h>
using namespace std;
int add(int a,int b){
	if(b==0)//当进位数为零时,a就是结果了
		return a;
	int num1,num2;
	num1=a^b;
	num2=(a&b)<<1;
	add(num1,num2);
}
int main(){
	int a,b;
	while(scanf("%d%d",&a,&b)){
		cout<<add(a,b)<<endl;
	}
}