题目描述
- 写一个函数,求连个整数之和,要求在函数体内不得使用
'+'、'-'、'*'、'/'
四则运算符号
题目解读
- 剑指Offer 310
代码
class Solution {
public:
int Add(int num1, int num2){
int sum, jinwei;
do{
sum = num1 ^ num2;
jinwei = (num1 & num2) << 1;
num1 = sum;
num2 = jinwei;
}while(num2 != 0);
return num1;
}
};
扩展题目
不使用新的变量,交换两个变量的数值。比如我们有两个变量 a, b,我们希望交换它们的值。有两种不同的方法
- 方法一、基于加减法
a = a + b; // a 暂存两数之和
b = a - b; // b为两数之和减去b,b变为原来的a
a = a - b; // a为两数之和减去现在的b(原来的a),变成原来的b
- 方法二、基于异或运算
a = a ^ b;
b = a ^ b;
a = a ^ b;