不用加减乘除做加法

题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。

分析:对数字进行运算,除了进行四则运算外,就只剩下位运算这条道路了。

     位运算是对二进制的而言的。这里需要用到三个运算:异或、与、左移位。

代码如下:

 1 int add(int num1, int num2)
 2 {
 3     if(num2==0)
 4         return num1;
 5     else
 6     {
 7         int sum=num1^num2;
 8         int carry=(num1&num2)<<1;
 9         return add(sum,carry);
10     }
11 }

具体分析可以参见:

  http://www.acmerblog.com/interview-12-3180/

原文地址:https://www.cnblogs.com/anthozoan77/p/3501192.html