題目描述
- 寫(xiě)一個(gè)函數(shù),求連個(gè)整數(shù)之和,要求在函數(shù)體內(nèi)不得使用
'+'、'-'、'*'、'/'四則運(yùn)算符號(hào)
題目解讀
- 劍指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;
}
};

擴(kuò)展題目
不使用新的變量,交換兩個(gè)變量的數(shù)值。比如我們有兩個(gè)變量 a, b,我們希望交換它們的值。有兩種不同的方法
- 方法一、基于加減法
a = a + b; // a 暫存兩數(shù)之和
b = a - b; // b為兩數(shù)之和減去b,b變?yōu)樵瓉?lái)的a
a = a - b; // a為兩數(shù)之和減去現(xiàn)在的b(原來(lái)的a),變成原來(lái)的b
- 方法二、基于異或運(yùn)算
a = a ^ b;
b = a ^ b;
a = a ^ b;