天天看點

實作兩個數的相加求和,實作過程中不能用+運算符号

二進制加法。發現一個特點。

位的異或運算跟求’和’的結果一緻:

異或 1^1=0 1^0=1 0^0=0

求和 1+1=0 1+0=1 0+0=0

位的與運算跟求’進位‘的結果一緻:

位與 1&1=1 1&0=0 0&0=0

進位 1+1=1 1+0=0 0+0=0

于是可以用異或運算和與運算來表示加法

1

2

3

4

5

6

7

8

9

10

public int addAB(int A, int B) {

int xor,and;

while(B!=0){

xor = A^B;

and = (A&B)<<1;

A=xor;

B=and;

}

return A;

}

來自 Viva La Vida 大佬