不用加减乘除做加法

非常easy想到为二进制的与或非。

加法分为三步:

1 各位相加不进位 0 + 0 =0, 0+1 = 1,1+0=1,1+1=1,非常明显是异或运算

2 进位 1+1 =10进位,其余均不进位 。进行左移动一位

3 一直循环

代码:

#include <iostream>

using namespace std;

int sum(int data1,int data2){

	int sum,carry;
	do{
		sum = data1 ^ data2;
		carry = (data1 & data2)<<1;
		data1 = sum;
		data2 = carry;
	}while(carry != 0);

	return data1;
}

void main(){

	cout <<sum(6,7);
	
}

执行结果:


posted @ 2017-05-08 10:12  gccbuaa  阅读(143)  评论(0编辑  收藏  举报