A+B单独的通过算术运算实现是很简单的,具体的代码操作如下所示:
public class Solution {
/**
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
public int aplusb(int a, int b) {
// write your code here
int sum;
sum = a + b;
return sum;
}
}
下面主要讲的是通过位运算符实现相加操作。
思路:
不使用算术运算求和那么只能考虑直接在二进制位上进行位运算,事实上利用异或运算(^)和与运算(&)就能完成加法运算要做的事情,其中异或运算完成相加但是不进位,而与运算计算出哪些地方需要进位,在通过左移运算(<<)就可以完成进位操作了。
例子:
先举一个十进制加法的例子,比如4+6=10,如果不考虑进位得到的结果是2,只考虑进位得到的结果是8,加起来正好是10,对于二进制其实也是这样的,因此我们可以将加操作和进位操作分开,二进制不进位加法其实就是异或操作,而进位操作实际上就是两个数对应位都为1时的左移,考虑到进位次数有限,当进位为0时,加出来的就是答案了。
4 + 6 = 10
4的二进制:0000 0100
6的二