異域的概念是相同為0不同為1.如果兩個數值異或後的值相同,異或前可能不同。
比如二進位制:0010^0001=0011
0000^0011=0011
乙個陣列存放了2n+1個整數,其中有n個數出現了2次,1個數出現了1次,找出出現1次的數是多少?
2,3,2
20010
30011
20010
其中0010 0010結果為0000,0000 ^ 0011 為0011本身
也就是說在乙個整形陣列中,如果相同的數字是成對出現的(位置不一定相鄰),遍歷陣列,並且兩兩異或,結果一定為0.
如果出現過其中一對有缺失數字,即只出現了乙個,則遍歷異或結果為缺失的數字。
class datademo
; int result = 0;
for(int i = 0 ; i < ins.length; i++)
/*0^2=2
2^3=1
1^2=3
最後的結果為:3
**/system.out.println("最後的結果為:"+result);
}}
反轉字串:
bacb970111
a960000
c981000
1. begin=b=0111
end=c=1000
2.begin=b^c=0111 ^ 1000 = 1111
3.end=begin ^ end = 1111 ^ 1000 = 0111
4.begin = end ^ begin = 0111 ^ 1111 = 1000
最後結果 begin = 1000 end = 0111
也就是begin=c end=a
system.out.println("-------------------");
string str = "abcde";
int begin = 0;
int end = str.length() - 1;
char chs = str.tochararray();
while(begin < end)");
begin++;
end--;
} /*
edcba
**/system.out.println(new string(chs));
JAVA異或加密
int 或者byte型別的資料異或操作後變成另外乙個數字,再次和同乙個數異或後又變成原來的數字。加密前數字 3 加密後數字 1 解密後數字 3 加密前字元 abcd加密 加密後字元 c af爢筄 解密後字元 abcd加密 public static void main string args str...
Java 與 或 非 異或
位運算子主要針對二進位制,它包括了 與 非 或 異或 從表面上看似乎有點像邏輯運算子,但邏輯運算子是針對兩個關係運算子來進行邏輯運算,而位運算子主要針對兩個二進位制數的位進行邏輯運算。下面詳細介紹每個位運算子。1 與運算子 與運算子用符號 表示,其使用規律如下 兩個運算元中位都為1,結果才為1,否則...
java中 異或運算子的運用
的位運算子中有乙個叫異或的運算子,用符號 表示,其運算規則是 int i 15,j 2 system.out.println i j i j 執行結果是 i j 13.分析上面程式,i 15轉成二進位制是1111,j 2轉成二進位制是0010,根據異或的運算規則得到的是1101,轉成十進位制就是13...