写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
题目要求不能使用加减乘除做加法,那么唯一的办法使用位运算来实现两位数的加法。位运算实现加法的两个主要步骤就是实现两个数无进位加法以及两个数加法中符号进位。其中第一个操作就是异或运算,第二个就是按位与并左移1位,重复上述操作直至符号位为0。
github链接:JZ48-不用加减乘除做加法
#include <iostream>
using namespace std;
class Solution {
public:
int Add(int num1, int num2){
while(num2 != 0){
int sum = num1^num2;
int carry = (num1&num2)<<1;
num2 = carry;
num1 = sum;
}
return num1;
}
};
int main()
{
int num1,num2;
Solution s;
while(cin>>num1>>num2){
cout<<s.Add(num1,num2)<<endl;
}
return 0;
}