【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 }
复制代码

 

posted @   靠谱杨  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示