1 計算兩數相加,不使用加號( )問題。

2021-08-14 21:57:48 字數 889 閱讀 2175

在剛剛做這道題的時候,開始並沒有頭緒,在看到提示使用位運算子的時候,但是對這些符號的了解不太記得,所以在網上找了一些關於位運算子的資料,歸納如下:(供日後參考)

1.「&」,二進位制中相對位數的兩個數都為1,結果才為1,否則結果為0,類似邏輯門中的與門。

2.「|」,二進位制中相對位數的

兩個數中有乙個1或都為1,結果為1,否則結果為0,類似邏輯門中的或門。

3.「~」,(單目運算子)二進位制

中相對位數的數為1時,結果為0,為0時,結果為1,

類似邏輯門中的非門。

4.「^」,二進位制

中相對位數的

兩個數不同時,結果為1,兩個數相同時結果為0,類似邏輯門中的與非門。

5.「<<」,

用來將乙個數的各二進位制位全部左移n位,右補0

,例如:11101<<2=1110100。

6.「>>」,

將乙個數的各二進位制位右移n位,移到右端的低位被捨棄,對於無符號數,高位補0

,例如:11101>>2=00111。

在思考的過程中發現,^運算和+法運算的不進製結果相同,&運算和加法運算的只進製結果類似。

第一步,相加,不進製時,如果兩個位都是0或1,則相加為0,不相同時則為1,所以用異或表示 

第二步,相加,只進製,也就是說只有當兩個位都是1時才進製,其它情況不進製,所以用按位與,然後左移,因為最後一位進製為0 

第三步,遞迴直到沒有位可進。 

int add(int num1, int num2)  

while(num2!=0);

return num1;

}

同時還可以使用遞迴函式表示

int add(int a,int b) 

1 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

LetCode兩數相加問題

最近開始刷letcode上的題目,在做第二個問題時遇到了感覺很有意思的問題 問題描述 給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之...

LeetCode 1 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...