不用加減乘除做加法

題目描述

寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。

分析:兩個數相加不讓用加減乘除,那肯定就是位運算了啊,用位運算模擬加法挺簡單的,如果有快速冪的基礎的話很容易能想到,按位異或然後按位與左移一位,直到按位與爲0,在草稿紙上稍微畫一下就能理解。不過我還是看到了很皮的解法,就是利用地址,把num1定義爲char*類型指針,然後返回num1[num2]的地址即可。

代碼:

class Solution {
public:
    int Add(int num1, int num2)
    {
        int tem1=0,tem2=0;
        while(num2){
            tem1=num1^num2;
            tem2=num1&num2;
            num1=tem1;
            num2=tem2<<1;
        }
        return num1;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章