题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路分析
- 用十进制加法思想处理二进制数据的加法
- 求和、求进位,直到进位为0.
class Solution {
public:
int Add(int num1, int num2)
{
// 辅助变量,第一步的和sum,进位carry
int sum,carry;
//循环体求和,循环实现多层进位,模拟每一位相加
do{
sum = num1 ^ num2;// 逐位相加求和,进位为0,
carry = (num1 & num2) << 1;// 求进位,进位需要左移一位
num1 = sum;// 更新num1
num2 = carry;// 更新num2
}while (num2 != 0);//没有进位时,退出循环
// 返回结果
return num1;
}
};
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com