A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//对这个交换过程不是很明白

public static void fun3(){
                        int a = 4;
                        int b = 5;
                       
                        System.out.println("交换前:a=" + a + ", b=" + b);

                        a = a ^ b;  
                        b = a ^ b;   
                        a = a ^ b;   

                        System.out.println("交换后:a=" + a + ", b=" + b);
                }

3 个回复

倒序浏览
一个数两次异或同一个数后,是它本身,楼主明白吗?
那么接下来就好说了。
a = a ^ b;                //     定义一个临时变量 temp = a =  a ^ b;
b = a ^ b;                //     b = temp ^ b ;   此时 b = a ;
a = a ^ b;                //     a = temp ^ a ;    此时 a = b;
回复 使用道具 举报
a = a + b;
b = a - b;
a = a - b;
也行
回复 使用道具 举报
a=a^b(a现在等于a^b);  b=(a^b)^b(一个数与一个数2次还是原来的数,这时b=a),a=a^(a^b)(这时a=b)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马