题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
思路:根据剑指中的思路,我们可以 用位运算代替二进制的加法运算。第一步不用考虑进位对每一位相加。这一步的结果和两数异或的结果相同;第二步进位相当于是两个数进行与运算再向左移动一位;第三部将前两个步骤的结果相加,知道不产生进位为止。
代码:public int Add(int num1,int num2) {
while (num2 != 0) {
// 计算个位
int temp = num1 ^ num2;
// 计算进位(1+1)
num2 = (num1 & num2) << 1;
num1 = temp;
}
return num1;
}