java異或運算有啥用 java中異或是怎樣算的?
java中異或是怎樣算的?異或運算(^)基于二進制數(shù)據(jù)。也就是說,當代碼中使用異或運算時,這兩個條件在運算前會被轉(zhuǎn)換成二進制數(shù)據(jù)。如果外國同一個地方的值相同(均為0或均為1),則為0;如果值不同(一個
java中異或是怎樣算的?
異或運算(^)基于二進制數(shù)據(jù)。也就是說,當代碼中使用異或運算時,這兩個條件在運算前會被轉(zhuǎn)換成二進制數(shù)據(jù)。如果外國同一個地方的值相同(均為0或均為1),則為0;如果值不同(一個為0,一個為1),則為1。例如,int a=4,int b=6,int c=a^b//c的值是a和b的異或。過程1和a的二進制值是0000 0100//,因為高位相同,所以低8位被刪除。2經(jīng)過異或運算后,B的二進制值為0000 0110 3,0000 0010//結(jié)果為2
邏輯代數(shù)有三個基本運算:and,or和not。實際的邏輯運算問題往往比and、or和not更復雜。但是,它們可以通過and、or和not的組合來實現(xiàn)。最常見的復合邏輯運算是and not、or not、and not、XOR或or。你問的問題(多項式運算和二進制異或會產(chǎn)生相同的結(jié)果),因為多項式可以用邏輯代數(shù)的基本定理來簡化,最后的最小組合可能是異或!詳見嚴實主編的《數(shù)字電子技術基礎》。
為什么多項式運算和二進制異或會產(chǎn)生相同結(jié)果?
假設j=I,那么j>> I=0
j=I,j>> I=0
右移位數(shù)等于位數(shù)除以2,二進制是一組32:(此公式適用于正數(shù)的無符號右移,但不適用于負數(shù))
j>> I=j>>> I=J/(int)(數(shù)學.pow(2,I%32))
向左移位的位數(shù)等于一個組中二進制32乘以2的位數(shù):
J<< I=J*(int)(數(shù)學.pow(2,I%32))
異或運算,從二進制算法到十進制,公式:
^符號異或0^0=0,1^0=1,0^1=1,1^1=0
示例:
9 binary:1001
2 binary:0010
9^2 Result:1011
轉(zhuǎn)換為decimal:821=11
規(guī)則:跳過0的數(shù)字,只關注每一位的1個十進制數(shù)=數(shù)學.pow(2,數(shù)字(從左到右)-1)