【轉】異或
阿新 • • 發佈:2019-04-28
href 結合 color width 推薦 a+b 超出 ron borde
問題:交換兩個int變量a,b值的方法?
方案1,需要借助第三個變量:
int tmp=a; a=b b=tmp; |
方案2,通過加減運算:
a=a+b; b=a-b; a=a-b; |
這種方案,a+b的結果可能超出int的範圍,不推薦! |
方案3,通過異或運算:
a=a^b; b=a^b; a=a^b; |
這種方式是最快的,推薦! |
====================================================================================
異或是一種基於二進制的位運算,用符號XOR或者 ^ 表示。
如果參與異或運算的兩個位相同則結果為0,否則結果為1。
簡單理解就是不進位加法,如1+1=0,,0+0=0,1+0=1。
異或運算特點 |
1、任何數異或0,等於該數自身。 2、任何數異或1,等於將該數取反。 3、任何數異或自身,等於將該數置0。 |
異或運算性質 |
1~交換律。 即a ^ b == b ^ a。 2~結合律。 即a ^ b ^ c = (a ^ b) ^ c == a ^ (b ^ c)。 3~自反性。 即a ^ b ^ b == a。 a ^ b ^ a == b。 |
====================================================================================
異或的性質及運用
【轉】異或