異或運算(^)都以二進制數(shù)據(jù)為基礎進行的運算。也就是說當代碼中使用到異或運算時,都會先將兩個條件進行轉(zhuǎn)換,轉(zhuǎn)換成二進制數(shù)據(jù)后,再進行運算。異域中同位如果值相同(都是0或者都是1)則為0,不同(一個是0,一個是1)為1。
十年的漢陰網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整漢陰建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“漢陰網(wǎng)站設計”,“漢陰網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
例如
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
Java代碼:
public?class?test{
public?static?void?main(String[]?args)?{
String?source?=?"cghjhgfgsdyugh";
int?ch?=?source.charAt(0);
for(int?i=1;?isource.length();?i++)?{
ch?^=?source.charAt(i);
}
System.out.printf("%d?:?%c\n",?ch,?ch);
}
}
運行測試:
28 :
int 32位,補碼存儲
int?a?=?51;
int?b?=?-16;
System.out.println("51??="?+?Integer.toBinaryString(a));
System.out.println("-16?="?+?Integer.toBinaryString(b));
int?c?=?a^b;
System.out.println("異或????="?+?Integer.toBinaryString(c));
System.out.println("即????????="?+?c);
51 ?=110011
-16 =11111111111111111111111111110000
異或 ? ?=11111111111111111111111111000011
原碼為1000。。。111101
即 ? ? ? ?=-61
private?String?twoStringXor(String?str1,?String?str2)?{
byte?b1[]?=?str1.getBytes();
byte?b2[]?=?str2.getBytes();
byte?longbytes[],shortbytes[];
if(b1.length=b2.length){
longbytes?=?b1;
shortbytes?=?b2;
}else{
longbytes?=?b2;
shortbytes?=?b1;
}
byte?xorstr[]?=?new?byte[longbytes.length];
int?i?=?0;
for?(;?i??shortbytes.length;?i++)?{
xorstr[i]?=?(byte)(shortbytes[i]^longbytes[i]);
}
for?(;ilongbytes.length;i++){
xorstr[i]?=?longbytes[i];
}
return?new?String(xorstr);
}