1. 程式人生 > >Sum of Two Integers

Sum of Two Integers

java clas 條件 過程 http 直接 符號 opera color

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.

分析:不通過四則運算符號完成求和;

思路:很明顯只能通過二進制的位運算來完成。這裏查看一篇博客。

https://ych0112xzz.github.io/2016/10/27/OperationwithBits/

簡述加法的原理:

二進制數求和的過程可以分解為對應位數直接相加再加上相對應的進位。

1,直接相加用異或可以完成: 

  0101+0101=0000

  0101^0101=0000

2,進位可以用(a&b)<<1完成:

  0101+0101=1010

  (0101&0101)<<1=1010

第一和第二部的結果相加只需要重復一次步驟1即可。對於多次進位,把條件設置為當步驟二結果為0是結束。

JAVA CODE

class Solution {
    public int getSum(int a, int b) {
        return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
    }
}

Sum of Two Integers