異或應用
package basis.day02;/** * 異或的重要用途:轉換m,n的值 * @author LENOVO * */public class TestXor { public static void main(String[] args){ /* * 交換m,n的值 */ int m = 12; int n = 5; /* * 方法一:設定一個中間變數temp */ //System.out.println("m = " + m + " n = " + n); //System.out.println("交換"); //int temp ; //temp = m; //m = n; //n = temp; //System.out.println("m = " + m + " n = " + n); /* * 疊加,再減。缺點不能計算過大的數 */ //System.out.println("m = " + m + " n = " + n); //System.out.println("交換"); //m = m + n; //n = m - n; //m = m - n; //System.out.println("m = " + m + " n = " + n); /* * 利用異或的特性 * 兩個相同的數進行異或(因為每一位都相同)得0,0與任何數異或還是這個數(0,1異或得1;0,0異或得0) * 因此三個數進行異或(其中有兩個相同的數)結果為不同於其他兩個的數 */ System.out.println("m = " + m + " n = " + n); System.out.println("交換"); m = m ^ n; n = m ^ n; //(m^n)^n m = n ^ m; //n^(m^n) n已經改變為m的值(12)(因此運算式最後結果是n的值賦值給m) System.out.println("m = " + m + " n = " + n); }}