面试题47:不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。
代码如下:
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;
}
测试用例:
输入正数、负数和0。
本题考点:
● 考查发散思维能力。当+、-、×、÷运算符都不能使用时,应聘者能不能打开思路想到用位运算做加法,是能否顺利解决这个问题的关键。
● 考查对二进制和位运算的理解。