<劍指Offer>面試題65: 不用加減乘除做加法

題目描述

  • 寫(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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容