【Java】使用位運算完成陣列中兩個變數交換位置
阿新 • • 發佈:2022-04-14
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 }