黑马程序员技术交流社区

标题: 一个遇到的面试题,90%的概率会问到,你看了说明你赚了 [打印本页]

作者: ytblght55    时间: 2013-6-23 00:21
标题: 一个遇到的面试题,90%的概率会问到,你看了说明你赚了
本帖最后由 ytblght55 于 2013-6-23 00:30 编辑

  1. <P>
  2. /*</P>
  3. <P> </P>
  4. <P><FONT color=yellowgreen size=4>一道经常遇到的面试题,看了的同学赚到了,最好能理解.
  5. </FONT>
  6. 需求:将x和y的值互相倒换,不通过第三方变量实现
  7. 思路:一个数^一个数2次那么还是原数
  8. 步骤:
  9. 1、x=x ^y 将x的值^上y用 x(此x可以理解为X1) 记录该值
  10. 2、y=x^y 因为x(即X1)的值为x^y即等式可以理解为y=x^y^y,一个数^一个数2次那么该值为x
  11. 3、x=x^y 这里等式右边的x已经在等一个等式被赋值了(即X1),y在第二个等式被赋值可以理解为(y=X1^y),那么该等 式就可以理解为x=X1^X1^y,得到y的值。
  12. */
  13. class Demo4{
  14. public static void main(String args[])
  15. {
  16. int x =4;int y=2;
  17. x=x^y;   // 100
  18.           // ^ 010
  19. //--------------------------------
  20.            // 110=6
  21. y=x^y;
  22.         // ^ 010
  23. //--------------------------------------
  24.               // 100=4
  25. x=x^y;
  26.         // ^ 110
  27. //-----------------------------------------
  28.             // 010=2

  29. System.out.println("y="+y+","+"x="+x);
  30. }
  31. }
  32. </P>
复制代码

作者: ㄗs:/|丶hearts    时间: 2013-6-23 01:04
给力               
作者: 秦兰之    时间: 2013-6-23 06:57
^这个符号键盘都打不出来,打出来就是6和……,话说它是什么意思?
作者: ytblght55    时间: 2013-6-23 22:52
秦兰之 发表于 2013-6-23 06:57
^这个符号键盘都打不出来,打出来就是6和……,话说它是什么意思?

^ 位运算符,异或,只有在两个比较的位不同时其结果是1,否则结果为0。
作者: 8047107    时间: 2013-6-23 23:45
秦兰之 发表于 2013-6-23 06:57
^这个符号键盘都打不出来,打出来就是6和……,话说它是什么意思?

因为你的是中文输入状态.转换成英文状态即可!
作者: 8047107    时间: 2013-6-23 23:45
话说这也给你加分?!
作者: ytblght55    时间: 2013-6-24 00:56
8047107 发表于 2013-6-23 23:45
话说这也给你加分?!

嘘....别声张啊!!!:D




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2