题目描述:
请编写一个函数,将两个数字相加。不得使用+或其他算术运算符。
给定两个intA和B。请返回A+B的值。
测试样例:
1,2
3
我们知道,整数在计算机中是以二进制的形式表示的,
1^1=0,1^0=1,0^0=0;异或可以表示相加;
1&1=1,1&0=0,0&0=0;按位与可以表示进位;
那么,每次将每一位的和相加,然后再加上进位左移一位,如果有两个数中有一个为0,则返回其中一个数;
代码如下:
import javax.xml.ws.WebEndpoint;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
System.out.println(addAB(a,b));;
}
private static int addAB(int a, int b) {
if (a==0){
return b;
}else {
if (b==0){
return a;
}
return addAB(a^b,(a&b)<<1);
}
}
}