题目:写一个函数,求两个整数之和,要求在函数体内不得使用+,-,×,÷ 四则运算符号。
方法:两数异或并左移一位,知道不产生进位为止
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;
}
相关问题:不使用新的变量,交换两个变量的值。
- 方法1:基于加减法。a = a + b; b = a - b; a = a - b;
- 方法2:基于异或运算。a = a ^ b; b = a ^ b; a = a ^ b;