1.问题描述
写一个函数,求两个整数之和,要求函数体内不得使用加减乘除运算符。(来自《剑指offer》)
2.分析
我们分析做十进制加法时,可以分为三步进行例如 5+17 , 1)各位相加不进位 5+7 = 12 , 2)第二步做进位 5+7有进位 进位的值是10 ,3)把前面两个结果加起来 12+10的结果是22 ,,对于二进制同样也遵循这个规律。
3.代码
int add(int num1,int num2){int sum = 0;int carry = 0;do{sum = num2 ^ num1;carry = (num1 & num2) << 1;num1 = sum;num2 = carry;}while (num2 != 0);return sum;}
只有一条路不能选择——那就是放弃的路;