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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ytblght55 中级黑马   /  2013-6-21 10:37  /  2043 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 巩建 于 2013-6-21 11:20 编辑
  1. /*
  2. 需求:将x和y的值互相倒换,不通过第三方变量.
  3. 思路:一个数^一个数2次那么还是原数
  4. 步骤:
  5. 1、x=x ^y 将x的值^上y用x记录该值
  6. 2、y=x^y 因为x的值为x^y即等式为y=x^y^y,一个数^一个数2次那么该值为x
  7. 3、x=x^y 因为y的值为x^y,x的值为x^y,即等式可以写成x=x^y^x^y
  8. 疑惑点:?为什么x最后会等于2
  9. */
  10. class Demo{
  11. public statci void main(String args[])
  12. {
  13. int x =4;int y=2;
  14. x=x^y;
  15. y=x^y;
  16. x=x^y;
  17. System.out.println("y="+y+","+"x="+x);
  18. }
  19. }
复制代码
疑惑点:?为什么x最后会等于2即y的值. 即步骤三里面的赋值表达式x=x^y;为什么等于2即 y????

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

9 个回复

倒序浏览
1.x=x^y;
2.y=x^y;
3.x=x^y;
1:x=(x^y);
2:y=(x^y)^y;这时y=x;
3:x=(x^y)^(x);这时x=y;

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
x=x^y;
y=x^y;即表示y=(x^y)^y=x
x=x^y;即表示x=(x^y)^x=y,这里的y已经用前面的换到的x代替了

一个数异或另外一个数两次得到的结果还是这个数

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报
msileandroid 发表于 2013-6-21 10:54
1.x=x^y;
2.y=x^y;
3.x=x^y;

:)理解了谢谢
回复 使用道具 举报
面试题,大家可以记忆下!!
回复 使用道具 举报
我相信很多人都会在这里卡壳,我也是新手,想了老半天!!!
回复 使用道具 举报
这确实要转个弯,楼主技术分忒高,感谢提了个醒!!
回复 使用道具 举报
这是典型的交换算法,
a = a^b;//将a变为一个中间过度变量
b = a ^b;// b =a
a = a ^b;//a =b
回复 使用道具 举报
路过……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马