Написать функцию сложения не используя арифметический оператор сложения

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public class SumDemo {
public static void main(String[] args) {
// Протестируем метод sum()
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
if (i + j != sum(i, j)) {
throw new ArithmeticException("Метод sum() работает не верно");
}
}
}
System.out.println("Метод sum() работает успешно");
}
private static int sum(int a, int b) {
int x = a ^ b;
int y = a & b;
return y == 0 ? x : sum(x, y << 1);
}
}