黑马程序员技术交流社区

标题: 第二次异或是3复制给了y,那么第三次的异或我没有看懂为... [打印本页]

作者: zhxueqiu    时间: 2013-6-21 02:31
标题: 第二次异或是3复制给了y,那么第三次的异或我没有看懂为...
本帖最后由 zhxueqiu 于 2013-6-21 14:55 编辑

//两个变量值交换
class Demo2
{
        public static void main(String[] args)
        {        int x =3,y=2;
                x=x^y;
                y=x^y;
                x=x^y;
                System.out.println("x="+x+", y="+y);
        }
}


作者: Kurt_cobain    时间: 2013-6-21 02:59
                x=x^y;   
                y=x^y;      -->   (x^y)^y
                x=x^y;      -->   (x^y)^x
作者: zhxueqiu    时间: 2013-6-21 12:07
谢谢  三Q
作者: zhxueqiu    时间: 2013-6-21 12:08
Kurt_cobain 发表于 2013-6-21 02:59
x=x^y;   
                y=x^y;      -->   (x^y)^y
                x=x^y;      -->  ...

用文字说一下呗!做一下注释.
作者: Kurt_cobain    时间: 2013-6-21 13:52
zhxueqiu 发表于 2013-6-21 12:08
用文字说一下呗!做一下注释.

x=x^y;   
y=x^y;   把上面的x带进去。就是(x^y)^y。一个数异或同一个数两次。结果还是那个数。y=x  
x=x^y    把上面的x再带进去。现在y变了,根据上一步y=x。就是(x^y)^x。一个数异或同一个数两次。结果还是那个数。x=y
两个就互换过来了。
作者: Just_Only    时间: 2013-6-21 14:28
问题已解决,你乐我也乐,如果问题已经解决,请把帖子改为已解决,论坛美好的风格靠大家一起努力,谢谢合作。
作者: zhxueqiu    时间: 2013-6-21 15:08
本帖最后由 zhxueqiu 于 2013-6-21 15:19 编辑
Kurt_cobain 发表于 2013-6-21 13:52
x=x^y;   
y=x^y;   把上面的x带进去。就是(x^y)^y。一个数异或同一个数两次。结果还是那个数。y=x  
x=x ...

好吧 我知道了,谢谢.
作者: emos-c    时间: 2013-6-21 15:26
zhxueqiu 发表于 2013-6-21 15:08
好吧 我知道了,谢谢.

回复下楼上这个问题
int x =3, y=2;  //声明变量并赋值
x=x^y;           //用3^2结果为1  此时     x=1;
y=x^y;           //在用x值异或2也就是用1异或2结果是3,在把3赋值给y这时y的值是3了,此时y=3;
x=x^y;         //x=1^3;  1^3=2;              x=2;
x和y完成换位了
作者: zhxueqiu    时间: 2013-6-21 16:16
Just_Only 发表于 2013-6-21 14:28
问题已解决,你乐我也乐,如果问题已经解决,请把帖子改为已解决,论坛美好的风格靠大家一起努力,谢谢合作 ...

么有问题
作者: zhxueqiu    时间: 2013-6-21 18:21
Just_Only 怎么就这一个帖子可以修改成已解决,我的其他帖子怎么没有那个选择列表?




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