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

二進制加法。發現一個特點。
位的異或運算跟求’和’的結果一致:
異或 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 大佬

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章