CI20 1 不用運算子做加法

2021-06-16 21:22:06 字數 497 閱讀 2420

實現乙個函式求兩個數的和。不可以用+或其他運算符號。

思路:直觀的思路是通過位運算來做加法。第一步:先不考慮進製,將兩個數通過異或可以求得對應位的和;第二步:考慮進製,將兩個數通過與運算可以求得哪些位有進製,然後將該結果左移一位,再和第一步中的結果進行異或,一直迭代制導進製的結果為0。

#include using namespace std;

int addbit(int a, int b)

return sum;

}int main()

還有另外一種巧妙的思路,是利用指標的移動。例如給定兩個數a和b,把a看做為乙個char型指標的位址,然後a[b]的位址的值就是a+b的值。

#include using namespace std;

int addpointer(int a, int b)

int main()

不用 數字運算子做加法

題目 寫乙個函式,求兩個整數的之和,要求在函式體內不得使用 分析 這又是一道考察發散思維的很有意思的題目。當我們習以為常的東西被限制使用的時候,如何突破常規去思考,就是解決這個問題的關鍵所在。看到的這個題目,我的第一反應是傻眼了,四則運算都不能用,那還能用什麼啊?可是問題總是要解決的,只能開啟思路去...

不用 數字運算子做加法

看到這個的題目第乙個反應就是位運算,但是想不通怎麼進行位運算,看了後面才知道,博主舉了個例子就是5 17 不進製,算出5 17 12,如下圖,就是小學生的運算,下面的1就是進製 這樣最後12 十位的1就是22 同樣,二進位制也可以,5的二進位制是101,17是10001,運算方法 10001 10 ...

刷題演算法 不用 運算子求加法

題目來自於lintcode 第1題 a b問題 題目如下 給出兩個整數a和b,求他們的和,但不能使用 等數 算符。一般數值進行加法,比如兩個數,a 9,b 7。當進行十進位制加法的時候,1.先算各個位數,2.然後得到進製,3.最終將進製加上前一位。由於不用加運算子,只能從位運算進行入手。由於我的自動...