Nowcoder java-不用加减乘除做加法
(题目来自牛客网)
思路
1.两个数异或:相当于每一位相加,而不考虑进位;
2.两个数相与,并左移一位:相当于求得进位;
3.将上述两步的结果相加
代码
import java.util.Scanner;
public class Add {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1 = input.nextInt();
int num2 = input.nextInt();
System.out.println("num1+num2=" + add(num1, num2));
}
public static int add(int num1,int num2) {
while(num2 != 0){// 直到进位为0
int temp1 = (num1 & num2)<<1;//算进位,与后的结果再向左移动一位。相当于各位做与操作(左移以为求进位)
num1 = num1 ^ num2;//相加各位的值,不算进位。二进制每位相加就相当于各位做异或操作。
num2 = temp1;
}
return num1;
}
}