方法一:利用++来代替+
public class Solution {
public int Add(int num1,int num2) {
if(num2==0){
return num1;
}
if(num2>0){
for(int i=0;i<num2;i++){
num1++;
}
return num1;
}else{
for(int i=0;i<-num2;i++){
num1--;
}
return num1;
}
}
}
方法二:位运算,这个开始真没看懂,后来看了其他人的分析,整型在计算机中是以二进制存储的,过程如下:
- a + b 的问题拆分为 (a 和 b 的无进位结果) + (a 和 b 的进位结果)
- 无进位加法使用异或运算计算得出
- 进位结果使用与运算和移位运算计算得出
- 循环此过程,直到进位为 0
public class Solution {
public int Add(int num1,int num2) {
int carry=0;
while(num2!=0){
carry=(num1&num2)<<1;
num1=num1^num2;
num2=carry;
}
return num1;
}
}