1. java 異或 字元串找不同 是怎麼實現的
函數是運用了異或運算的特點,當兩次異或同一字元的時候,他們的結果就相互抵消(等同於沒有異或),所以嚴格說來,這個函數並不能判斷兩個字元串是否完全相同。他只是判斷把這兩個字元串,的所有字元全部統計一遍以後,是不是所有的字母都出現偶數次。如果是函數就返回0,否則就返回非0。
2. 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:
3. java的異或運算,求助!
提供思路
將每個位元組左移拼成8個位元組 第一個左移56 第二個48.。。。
0x30 0x31 0x39 0x39 0x39 0x39 0x39 0x39
0011 0000 0011 0001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 。。。
然後將3個8位元組異或 最後右移還原
4. java中的(或運算,異或運算,與運算)解釋下
java中或運算、異或運算、與運算的使用實例和解釋如下:
publicclassTest{publicstaticvoidmain(String[]args){
//1、左移(<<)
//然後左移2位後,低位補0:
////換算成10進制為20System.out.println(5<<2);//運行結果是20
//2、右移(>>)高位補符號位
//然後右移2位,高位補0:
//
System.out.println(5>>2);//運行結果是1
//3、無符號右移(>>>)高位補0
//例如-5換算成二進制後為:0101取反加1為1011
///
/我們分別對5進行右移3位、-5進行右移3位和無符號右移3位:
System.out.println(5>>3);//結果是0
System.out.println(-5>>3);//結果是-1
System.out.println(-5>>>3);//結果是536870911
//4、位與(&)
//位與:第一個操作數的的第n位於第二個操作數的第n位如果都是1,那麼結果的第n為也為1,否則為0
System.out.println(5&3);//結果為1
System.out.println(4&1);//結果為0
//5、位或(|)
//第一個操作數的的第n位於第二個操作數的第n位只要有一個是1,那麼結果的第n為也為1,否則為0
System.out.println(5|3);//結果為7
//6、位異或(^)
//第一個操作數的的第n位於第二個操作數的第n位相反,那麼結果的第n為也為1,否則為0
System.out.println(5^3);//結果為6
//7、位非(~)//操作數的第n位為1,那麼結果的第n位為0,反之。System.out.println(~5);//結果為-6}}
5. JAVA中如何對一個字元串里的字元做異或運算,例如,字元串A=cghjhgfgsdyugh;第一步
Java代碼:
publicclasstest{
publicstaticvoidmain(String[]args){
Stringsource="cghjhgfgsdyugh";
intch=source.charAt(0);
for(inti=1;i<source.length();i++){
ch^=source.charAt(i);
}
System.out.printf("%d:%c ",ch,ch);
}
}
運行測試:
28 :
6. JAVA按位異或運算問題
首先取反運算符優先順序高於異或運算符
其次int是32位
28=00011100(前面16位不寫了)
8=00001000
-8=11111000
-28=11100100
所以a=28^-8=00011100^11111000=11100100=-28
a=-28^8=11100100^00001000=11101100=-20
是-20,不是20。樓主看清楚了。
7. java怎樣用異或進行
異或運算(^)都以二進制數據為基礎進行的運算。也就是說當代碼中使用到異或運算時,都會先將兩個條件進行轉換,轉換成二進制數據後,再進行運算。異域中同位如果值相同(都是0或者都是1)則為0,不同(一個是0,一個是1)為1。
例如
int a=4;
int b=6;
int c = a^b;//c的值是a和b的異或。值為2.
過程
1、a的值二進制是
0000 0100 //這里去低8位,因為高位都一致。
2、b的值二進制是
0000 0110
3、異或後
0000 0010 //結果是2
8. java中6異或3是多少
5。
^異或運算符(當兩個數字不同時為1,其餘為0)6的二進制000001103的二進制00000011所以6^3=00000101答案是5。
9. java中異或是怎樣算的
異或運算(^)都以二進制數據為基礎進行的運算。也就是說當代碼中使用到異或運算時,都會先將兩個條件進行轉換,轉換成二進制數據後,再進行運算。異域中同位如果值相同(都是0或者都是1)則為0,不同(一個是0,一個是1)為1。
例如
int a=4;
int b=6;
int c = a^b;//c的值是a和b的異或。值為2.過程
1、a的值二進制是
0000 0100 //這里去低8位,因為高位都一致。 2、b的值二進制是
0000 0110 3、異或後
0000 0010 //結果是2
10. java中字元串異或的原理
存在按位異或,就是根據數據在內存中的二進制數的存放形式進行異或操作,
但是不存在字元串的異或
如果在內存中的數據:01010101和10101010異或,結果就是11111111,然後再將
11111111轉換成相應的數據輸出結果
注意:Java中沒有字元串的異或、與、或、非操作,不是C語言那樣(除非是你自己定義異或操作)