A. java中異或是怎樣算的
i = 14,異或演算法轉換二進制,同則取0異則取1;
異或是一種基於二進制的位運算,用符號XOR或者^表示,其運演算法則是對運算符兩側數的每一個進制位同值則取0,異值則取1.
簡單理解就是不進位加法,如1+1=0,0+0=0,1+0=1.
For example:
3^5 = 6
轉成二進制後就是 0011 ^ 0101 二號位和三號位都是異值取1 末尾兩個1同值取零,所以3^5 = 0110 = 6
而 i = 50 ,j = 60;
所以:
i 的二進制 = 00110010
j 的二進制 = 00111100
同位相同取0,不同取1所以得出來的值為00001110
i = i ^ j;所以i = 00001110 = 14
異或運算符
性質
1、交換律
2、結合律(即(a^b)^c == a^(b^c))
3、對於任何數x,都有x^x=0,x^0=x
4、自反性 A XOR B XOR B = A xor 0 = A
異或運算最常見於多項式除法,不過它最重要的性質還是自反性:A XOR B XOR B = A,即對給定的數A,用同樣的運算因子(B)作兩次異或運算後仍得到A本身。這是一個神奇的性質,利用這個性質,可以獲得許多有趣的應用。 例如,所有的程序教科書都會向初學者指出,要交換兩個變數的值,必須要引入一個中間變數。但如果使用異或,就可以節約一個變數的存儲空間: 設有A,B兩個變數,存儲的值分別為a,b,則以下三行表達式將互換他們的值 表達式 (值) :
A=A XOR B (a XOR b)
B=B XOR A (b XOR a XOR b = a)
A=A XOR B (a XOR b XOR a = b)
#code: