面试题65:不用加减乘除做加法
文章目录
题目
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
考点
二进制加法
二进制无进位和 = a ^ b
二进制进位 = (a&b)<<1
重复上述操作直到二进制进位为0
LeetCode版本
class Solution {
public:
int add(int a, int b) {
unsigned int num1 = a;
unsigned int num2 = b;
unsigned int sum,carry;
do{
sum = num1 ^ num2;
carry = (num1&num2) <<1;
num1 = sum;
num2 = carry;
}while(carry != 0);
return sum;
}
};