不使用加減乘除做加法

2021-09-24 22:47:49 字數 668 閱讀 4990

題目描述:寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

解題思路:

對於十進位制加法,兩數相加,首先是個位數相加,若相加結果小於10,就不用進製,直接得出結果;若相加結果大於等於10,結果就需要向前進一。

例如:num1=5,num2=7 5+7=12

對於二進位制加法:

第一步:相加各位的值,不算進製,得到010,二進位制每位相加就相當於各位做異或操作,101^111。

第二步:計算進製值,得到1010,相當於各位做與操作得到101,再向左移一位得到1010,(101&111)<<1。

第三步重複上述兩步, 各位相加 010^1010=1000,進製值為100=(010&1010)<<1。

繼續重複上述兩步:1000^100 = 1100,進製值為0,跳出迴圈,1100為最終結果。

**如下:

class

solution

return num1;}}

;

總結:對於二進位制兩數相加,每位二進位製做異或(^)操作,類似於十進位制加法,二進位制相加也有進製值,二進位制的進製值是每位二進位製做與(&)操作再向左移動一位。重複以上異或、與操作並向左移一位兩個步驟,直到進製值為0停止,

不用加減乘除做加法

author 過路的守望 思路 i 先將各bit位相加,不計進製,這一步可以用m n實現 ii 加上進製,進製如何來,用m n可以得到m和n中都為1的bit位,而不全為1的位則全部變為了0,該位相加會發生進製,使得左邊一位加1,因此 m n 1邊可得到進製後要加的1的位置 iii 將前面兩步的結果相...

不用加減乘除做加法

首先看十進位制是如何做的 5 7 12,三步走 第一步 相加各位的值,不算進製,得到2。第二步 計算進製值,得到10.如果這一步的進製值為0,那麼第一步得到的值就是最終結果。第三步 重複上述兩步,只是相加的值變成上述兩步的得到的結果2和10,得到12。同樣我們可以用三步走的方式計算二進位制值相加 5...

不用加減乘除做加法

package demo 題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。public class offer 30 return num1 if num1 0 num2 0 num1 num2 return num1 注意這裡每個if語句都要有返回值,否則每個迴圈會依次...