题解 | #不用加减乘除做加法#
不用加减乘除做加法
https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D13%26type%3D265&difficulty=&judgeStatus=3&tags=&title=&gioEnter=menu
剑指offer都是技巧题
class Solution {
public:
int Add(int num1, int num2) {
// 一个存放相加之后不进位的信息,一个存放进位后要相加的位
// 直到满足不再进位
return num2 ? Add(num1 ^ num2, (num1 & num2) << 1) : num1;
}
};
class Solution {
public:
int Add(int num1, int num2) {
// 进位以及两数不进位之和
int carry = (num1 & num2) << 1;
num1 = num1 ^ num2;
while (carry) {
int tmp = num1;
// 得出当前轮的不进位之和
num1 = num1 ^ carry;
// 上一轮的数据与上一轮的进位相加,判断下一轮的进位
carry = (tmp & carry) << 1;
}
return num1;
}
};

