题目
思路
- 考虑使用位运算进行解决
- 两个数异或的结果是两个数相加不考虑进位的结果(不考虑进位) 两个数与左移一位的结果,是两个数相加之后进位的结果(只考虑进位)
- 结论:两个数相加,如果不需要进位,即与左移等于0,则这个给值就是两个数相加 的值
代码
import java.util.*;
public class UnusualAdd {
public int addAB(int A, int B) {
if(B == 0){
return A;
}
int sum = 0;
int temp = 0;
while(B != 0){
sum = A^B;
temp = (A & B) << 1;
A = sum;
B = temp;
}
return sum;
}
}