不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

分析:肯定用位运算,模拟加法时首先将各位相加不进位,然后再算进位,最后相加。例如5+17=22,首先各位相加得到12,然后算进位得到10,再相加得到22.

各位相加不进位用异或计算,算进位先用与运算,再左移一位,然后重复直到没有进位。

int Add(int num1,int num2)
{
	int sum,carry;
        do
        {
                sum=num1^num2;
                carry =(num1&num2)<<1;
                num1=sum;
                num2=carry;
        }
        while(num2!=0);
        return num1;
}


原文地址:https://www.cnblogs.com/nickqiao/p/7583342.html