(1)先不考虑进位,按位计算各位累加(用抑或实现),得值a;
(2)然后计算进位,并将进位的值左移,得值b,若b为0,则a就是加法运算的结果,若b不为0,则a+b即得结果(递归调用该函数);
int add_no_arithm(int a, int b)
{
if (0 == b) return a; //当没有进位时
int sum = a^b;
int carry = (a & b) << 1; //进位
return add_no_arithm(sum, carry);
}