黑马程序员技术交流社区

标题: 关于异或的一些理解误区,求指教。 [打印本页]

作者: 、__WSD吴少东    时间: 2013-4-3 01:00
标题: 关于异或的一些理解误区,求指教。
本帖最后由 、__WSD吴少东 于 2013-4-5 17:47 编辑

在看到关于异或的作业讲解的时候,我思路进了个小圈套,
n = n ^ m;
m = n ^ m;//在这里,等价于n^m^m 没问题,
n = n ^ m;//n^(n^m)
/*在这里,毕老师讲的是,m = n^m  我理解不了。因为,m异或来异或去的已经变成了n里边的值了,换句话说,m已经换值成功了。假如说,m = 3,n = 5;那到了第二步,m已经等于5了。但是n 还是一堆乱码。再拿n异或m一次,那不就相当于n^n了么,可最后,为什么还换值成功了?
*/
请各位指点迷津纳。新手上路,多多关照

作者: 939676244    时间: 2013-4-3 02:02
m=3      n=5
n = n ^ m;     //5 = 5^3     
m = n ^ m;   //5=(5^3)^3
n = n ^ m;   //3=(5^3)^5
你说的n是乱码  n=n^m 啊 就是5=5^3啊然后异或5  n就变成3了

作者: 、__WSD吴少东    时间: 2013-4-3 09:15
939676244 发表于 2013-4-3 02:02
m=3      n=5
n = n ^ m;     //5 = 5^3     
m = n ^ m;   //5=(5^3)^3

我就有一点想不明白,进行第三步的时候,m值已经变了吧,那
n = n ^ m; // 3 = (5 ^ 3) ^ 5  这一步中的n的数值为什么还能换成n^m
作者: 影响力147753321    时间: 2013-4-5 11:24
哥们,到第三步时,n^n.这二个并不是一个n。前一个n是乱码不错。但后一个n(是第二步中的n,)等于n^m(n,m都是原来的值),n^n=n^(n^m)=m.
为什么会得到错误的结果呢?这三行代码是一个程序是在做运算。而运算是在方法栈中运行的。在运算过程中,开始运算得到变量值会被后一个运算得到的变量值所覆盖。不能直接访问到(如果想访问得要通过一个变量记住这个变量)。
作者: 、__WSD吴少东    时间: 2013-4-5 17:32
影响力147753321 发表于 2013-4-5 11:24
哥们,到第三步时,n^n.这二个并不是一个n。前一个n是乱码不错。但后一个n(是第二步中的n,)等于n^m(n,m都是 ...

原来如此啊/看来还是学的太肤浅了,到时候反过头来,应该就一目了然了,
对了哥们,那个怎么把未解决改成已解决。。找了老半天都找不到。。。
作者: 、__WSD吴少东    时间: 2013-4-5 17:48
原来在哪里。。。




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