思路:使用位运算,异或得到中间结果,与得到进位。
public int Add(int num1,int num2) {
//变量定义
int num1Tmp=num1,num2Tmp=num2;
//存放中间结果,若没有进位,中间结果就是最终结果
int valueAfterXOR=num1Tmp ^ num2Tmp;
//存放进位
int valueAfterAND=(num1Tmp & num2Tmp) << 1;
while(valueAfterAND!=0){
num1Tmp=valueAfterXOR;
num2Tmp=valueAfterAND;
valueAfterXOR=num1Tmp ^ num2Tmp;
valueAfterAND=(num1Tmp & num2Tmp) << 1;
}
return valueAfterXOR;
}