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.
不許用加減法,那就基本是位操作了。
兩個整數(shù)在二進制下,相與可以得到該位是否有進位的信息,異或可以得到排除進位以后的相加結果。
那么先將兩個數(shù)相與,得到進位信息,并將進位信息左移一位待用;
將兩個數(shù)做異或,得到無進位的結果;
如果剛才的進位是0,則完結;
如果不是,再將這個結果與剛才的進位作為新的加數(shù)。
var getSum = function(a, b) {
while (b!==0) {
var c = a&b;
a = a^b;
b = c<<1;
}
return a;
};