leetcode371 Sum Of Integers 不用加法計算兩個整數的和
阿新 • • 發佈:2019-02-15
Description
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
解法
思路:
首先不能用”+”、” - “符號,那麼計算兩個數的和也就只能用“位運算子”。位運算子是處理二進位制數的,先想想十進位制的怎麼進行加法的。
比如3+18=21。 首先個位相加3+8 = 11,個位是1,有進位。進位再與十位相加得到十位是2。
二進位制也一樣,如果不考慮進位,那麼1+0=1、1+1=0、0+0=0 這個結果是和“異或”(^)位運算子的處理結果是一樣的。之後處理進位問題,有且僅有1+1的情況下才會產生進位,所以用“&”位運算子來處理進位情況,運算之後向左移一位(<<)即可。
程式碼:
public int getSum(int a, int b) {
if(b == 0) return a;
return getSum(a^b, (a&b)<<1);
}