【剑指offer】48.不用加减乘除作加法

题目

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。ios


分析

题目要求不能使用加减乘除作加法,那么惟一的办法使用位运算来实现两位数的加法。位运算实现加法的两个主要步骤就是实现两个数无进位加法以及两个数加法中符号进位。其中第一个操做就是异或运算,第二个就是按位与并左移1位,重复上述操做直至符号位为0。git

github连接:JZ48-不用加减乘除作加法github


C++代码

#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;
}