二进制移位运算实现不用加号的加法
两个十进制整数求和的底层实现,使用位运算。
代码
//num1和num2都为十进制
public static int sum(int num1, int num2) {
if(num2==0){
return num2;
}else{
return add(num1^num2,(num1&num2)<<1);
}
}
首先要理解两个位运算符异或“^”和与“&”
num1^num2 —>异或计算未进位的部分
num1&num2 —>进位部分
(num1&num2)<<1 —>将进位部分向高位移位,实现进位
然后递归,直到进位部分为0。