java亦或
⑴ 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:
⑵ java異或運算符求詳細過程
int 32位,補碼存儲
inta=51;
intb=-16;
System.out.println("51="+Integer.toBinaryString(a));
System.out.println("-16="+Integer.toBinaryString(b));
intc=a^b;
System.out.println("異或="+Integer.toBinaryString(c));
System.out.println("即="+c);
51 =110011
-16 =
異或 =
原碼為1000。。。111101
即 =-61
⑶ JAVA中按位異或是什麼意思 不太理解,請指教,謝謝!
異或運算沒有聽過,不過位與運算就有,它的原理是:先把十進制(或N進制)轉換成二進制,再分別同位進行與運算,比如:
12&5(java中位與運算是用&符號表示的)
即:12
=
11000
&
5
=
01001
--------------------
=
11001
位異或運算或許是把它們進行異或吧。
PS樓下不能這么說,有些演算法還得用到這些位操作,用得妙的還真叫人拍案叫絕
⑷ java 異或 字元串找不同 是怎麼實現的
函數是運用了異或運算的特點,當兩次異或同一字元的時候,他們的結果就相互抵消(等同於沒有異或),所以嚴格說來,這個函數並不能判斷兩個字元串是否完全相同。他只是判斷把這兩個字元串,的所有字元全部統計一遍以後,是不是所有的字母都出現偶數次。如果是函數就返回0,否則就返回非0。
⑸ java中的異或 與或的區別
true || false || false 結果是true
true ^ false ^ false,結果也是true
false || true || false 結果是true
false ^ true ^ false 結果也是true
false || false || true => true
false ^ false ^ true => true
就是說三個條件只有一個為真的時候,他們運算結果是一樣的。
三個條件都是假的情況,運算結果都是false,也相同
但這不表示其他情況也能這樣互換。
⑹ 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}}
⑺ java中按位異或與邏輯異或的區別
邏輯沒有異或運算。
位異或指:異或運算^,異或運算它都是以二進制數據為基礎進行運算,1^1=00^0=11^0=10^1=1
⑻ java中字元串異或的原理
存在按位異或,就是根據數據在內存中的二進制數的存放形式進行異或操作,
但是不存在字元串的異或
如果在內存中的數據:01010101和10101010異或,結果就是11111111,然後再將
11111111轉換成相應的數據輸出結果
注意:Java中沒有字元串的異或、與、或、非操作,不是C語言那樣(除非是你自己定義異或操作)
⑼ 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
⑽ java中6異或3是多少
5。
^異或運算符(當兩個數字不同時為1,其餘為0)6的二進制000001103的二進制00000011所以6^3=00000101答案是5。