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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

老师说是使用什么异或3次就可以了,谁可以给我讲讲什么异或3次就置换了,有点想不明白~

39 个回复

倒序浏览
第一种我知道是咋整,定义一个第三方的变量交换即可。关键是这第二种,不准使用第三方变量的哈

点评

还有一个 a = a+b; b = a-b; a = a-b; 不过这个有缺陷  发表于 2014-8-10 08:33
回复 使用道具 举报
我来拿经验
^是同为假,不同为真
即 a=a^b;
    b=a^b; //a^b^b=a
    a=a^b; //a^b^a=b
回复 使用道具 举报
这样看你是否清楚点。
a=a^b;
b=a^b;//(a^b)^b=a
a=a^b;//(a^b)^(a^b)^b=b
//一个数异或上另一个数两次就等于这个数
回复 使用道具 举报
异或三次,自己画画图,理解下啊,
回复 使用道具 举报
用异或  来实现
a=a^b;
b=a^b;
a=a^b;
回复 使用道具 举报
来学习拉
回复 使用道具 举报
跟楼主有同样的问题
回复 使用道具 举报
  1.         public static void main(String[] args){
  2.                 int a = 5 ;
  3.                 int b = 4 ;
  4.                 a=a-(b=a-b);
  5.                 b=b+a;
  6.                 System.out.println(a+"   "+b);
  7.         }
复制代码
回复 使用道具 举报
昂  看一下  
回复 使用道具 举报
昂  看一下  
回复 使用道具 举报
基础视频里不是有嘛,楼主得努力啊!
回复 使用道具 举报
学习学习
回复 使用道具 举报
  1.         public static void main(String[] args){
  2.                 int a = 5 ;
  3.                 int b = 4 ;
  4.                 a=a-(b=a-b);
  5.                 b=b+a;
  6.                 System.out.println(a+"   "+b);
  7.         }
复制代码

点评

原来是这样,了解了,哈哈  发表于 2014-8-10 14:50
回复 使用道具 举报
a=a-b
b=b+a
a=b-a
一样道理,这个好理解吧
回复 使用道具 举报
视频里都有哎  你是来水经验的麽
回复 使用道具 举报
  1. public class Test1 {
  2.         public static void main(String[] args) {
  3.                
  4.                 int a= 3;
  5.                 int b =4;
  6.                 System.out.println("a = "+a + "    b = "+b);
  7.                
  8.                 a = a+b;
  9.                 b = a-b;
  10.                 a = a-b;               
  11.                 System.out.println("a = "+a + "    b = "+b);
  12.                
  13.         }

  14. }
复制代码
回复 使用道具 举报
我也来看看~~
推荐4种方案,你任选一种理解:
    方式1// 设置一个第三方变量  x     你老师不允许用,那我就不推荐了

回复 使用道具 举报
方式2//
a=a^b;  //这里吧a^b的值 复制给了 a,
b=a^b;  //a^b=a^b^b=a;   解释下:( 因为根据异或2次同一个数等于它本身的原理)这里的a指(a^b),
a=a^b; //a^b=a^b^a=b;   解释:看上一步骤,这里的b已经被上面的a赋值了,所以a^b  也就可以理解为 a^a,参照第一步,a之前被 a^b赋值。 所以结果就是 a^ (a^b) ==b; 这样通过异或就完成了不用第三方转换
    根据原理(一个数异或2次同一个数等于它本身);   你看看,希望你能快速理解
回复 使用道具 举报
方式3//
给一个
int a=10;
int b=20;

a=a+b;  //a=30
b=a-b;  // b=10
a=a-b;   // a=30-10=20;
通过a,b加减运算,不需要第三方变量  可完成转换   
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马