不用加减乘除做加法
- 参与人数:2248时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
剑指offer上的解析很清楚,主要分为两步:
1.异或运算做不进位加法
2.与运算 + 左移做进位
class Solution {
public:
int Add(int num1, int num2) {
int sum, carray ;
do {
sum = num1 ^ num2 ;
carray = ( num1 & num2 ) << 1 ;
num1 = sum ;
num2 = carray ;
} while ( num2 != 0 ) ;
return sum ;
}
};
第二次做:
class Solution {
public:
int Add(int num1, int num2) {
int sum ;
int carry ;
do{
sum = num1 ^ num2 ;
carry = ( num1 & num2 ) << 1 ;
num1 = sum ;
num2 = carry ;
} while ( num2 != 0 ) ;
return sum ;
}
};