1. 程式人生 > 其它 >【Java】使用位運算完成陣列中兩個變數交換位置

【Java】使用位運算完成陣列中兩個變數交換位置

 1 /**
 2  * 
 3  */
 4 package com.raliable.chapter_0;
 5 /** 
 6 * @author : Administrator
 7 * @date :2022年4月14日 下午4:54:04 
 8 * 
 9 */
10 /**
11  * @author Administrator
12  *
13  */
14 public class TestSwap {
15 
16     /**
17      * @param args
18      */
19     public static void main(String[] args) {
20         //
TODO 自動生成的方法存根 21 int num_1=5; 22 int num_2=7; 23 TestSwap.swap(num_1,num_2); 24 } 25 public static void swap(int a, int b) { 26 a = a^b; //a=5^7 b=7 27 b = a^b; //a=5^7 b=5^7^7 (5^0)(5) 現在b已經是5了 28 a = a^b; //a=5^7^5 (5^5^7)(0^7)(7) 現在a是7 交換完畢!
29 /* 30 * 異或運算:相同為0,不同為1 可以理解為:無進位相加! 31 * 比如:1 0 1 1 0 ^ 32 * 0 0 1 1 0 33 * 等於:1 0 0 0 0 34 * 異或運算滿足交換律和結合律 35 * 0^N=N 36 * N^N=0 37 */ 38 System.out.println("a:"+a+" b:"+b); 39 40 } 41 }