1. 程式人生 > >LintCode 1. A + B 問題

LintCode 1. A + B 問題

使用 write tco 位運算 int and 問題 你是 直接

題目:給出兩個整數a和b, 求他們的和, 但不能使用 + 等數學運算符。

說明

a和b都是 32位 整數麽?

  • 是的

我可以使用位運算符麽?

  • 當然可以
樣例

如果 a=1 並且 b=2,返回3

挑戰

顯然你可以直接 return a + b,但是你是否可以挑戰一下不這樣做?

解:

a^b異或運算,效果是不進位加法。

(a&b)<<1則為進位。

while(還有進位)

  結果=不進位加法結果+進位;

/*
 * @param a: An integer
 * @param b: An integer
 * @return: The sum of a and b
*/ int aplusb(int a, int b) { // write your code here while(b!=0) { int _a=a^b; int _b=(a&b)<<1; a=_a; b=_b; } return a; }

LintCode 1. A + B 問題