一、循环方式
// 加法
int add(int x, int y) { while (y != 0) { x ^= y; y = ((x ^ y) & y) << 1; } return x; }
// 乘法
int multiply(int x, int y) { int m = 0; while (true) { if (y == 0) break; if ((y & 1) == 1) { m= add(m, x); } y >>>= 1; x <<= 1; } return m; }
二、递规方式
int add(int x, int y) { if (0 == y) return x; int sum = x ^ y; int carry = (x & y) << 1; return add(sum, carry); }