/*
例:5+17=22
若进行相加不进位的运算,即得到12
补上进位计算,得到十位数上的进位为10
二者相加得到最终结果22
而二进制加法规则如下:
(1)两个整数做异或^,得到各位相加不进位的运算结果
(2)两个整数做与&,然后再左移一位,即得到进位的运算结果
*/
class Solution {
public:
int add(int num1, int num2){
while(num2){ //重复此过程,直到无进位
int sum = num1^num2; //得到"相加不进位"的结果
int carry = (num1&num2)<<1; //得到进位结果
num1 = sum , num2 = carry;
}
return num1;
}
};