题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
/**
* 例:14+7
1 1 1 0
+ 0 1 1 1
------------------------------------------------------
①不计进位相加(即异或运算): 1 0 0 1
②考虑进位(因为有进位的时候都是1,
所以结果为1代表该位运算有进位,与运算: 0 1 1 0
之后要左移一位):
③两个值相加
*/
public class Solution {
public int Add(int num1,int num2) {
int sum=0;
int carry=0;
//表示没有进位;因为第①②步相加的时候依然可能产生进位
while(num2!=0){
sum =num1 ^ num2;
carry=(num1 & num2)<<1;
num1=sum;
num2=carry;
}
return num1;
}
}