牛客網 編程題——C++ 另類加法《完整代碼加分析》

一,題目描述

請編寫一個函數,將兩個數字相加。不得使用+或其他算數運算符。

給定兩個int A和B。請返回A+B的值

測試樣例:

1,2

返回:3

二,程序分析

1.這個題還是比較容易的,首先考慮的是兩者的相加,然後進行按位與的計算,得出結果。

2.但是,又因爲有進位的計算,所以就要考慮僅爲的問題,所以我們要按照與運算,來進行考慮,最後,兩者進行相加,結束。

3.3. 兩個數相加:對應二進制位相加的結果 + 進位的結果比如:3 + 2 --> 0011 + 0010 --> 0011 ^ 0010 + ((0011 & 0010) << 1) —> (0011 ^ 0010) ^ ((0011 & 0010) << 1), 當進位之後的結果爲0時,相加結束

三,程序代碼

class UnusualAdd {
public:
    int addAB(int A, int B) {
        // write code here
        int sum = 0; int tmp =0;
        while(B != 0)
        {
            //進行和
            sum = A^B;
            //對應和的進位,既然是進位,就要整體向前一位
            tmp = (A&B)<<1;
            A = sum;
            B = tmp;
        }
        return sum;
    }
};

四,程序結果
在這裏插入圖片描述
感覺不錯的話,關注一個再走!!!

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