题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
算法:
利用二进制加法器实现加法 Bit Manipulation num1=17 num2=5
17(10001)+5(101)=22(10110)
carry=(10001&101)<<1=10
num1=10001^101=10100
num2=10
carry=(10100&10)<<1=0
num1=10100^10=10110
num2=0
//Bit Manipulation
class Solution {
public:
int Add(int num1, int num2) {
int carry = 0;
while (num2) {
carry = (num1 & num2) << 1;
num1 ^= num2;
num2 = carry;
}
return num1;
}
};