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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 、__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了么,可最后,为什么还换值成功了?
*/
请各位指点迷津纳。新手上路,多多关照

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
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了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
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
回复 使用道具 举报
哥们,到第三步时,n^n.这二个并不是一个n。前一个n是乱码不错。但后一个n(是第二步中的n,)等于n^m(n,m都是原来的值),n^n=n^(n^m)=m.
为什么会得到错误的结果呢?这三行代码是一个程序是在做运算。而运算是在方法栈中运行的。在运算过程中,开始运算得到变量值会被后一个运算得到的变量值所覆盖。不能直接访问到(如果想访问得要通过一个变量记住这个变量)。

评分

参与人数 1黑马币 +20 收起 理由
、__WSD吴少东 + 20 很给力!

查看全部评分

回复 使用道具 举报
影响力147753321 发表于 2013-4-5 11:24
哥们,到第三步时,n^n.这二个并不是一个n。前一个n是乱码不错。但后一个n(是第二步中的n,)等于n^m(n,m都是 ...

原来如此啊/看来还是学的太肤浅了,到时候反过头来,应该就一目了然了,
对了哥们,那个怎么把未解决改成已解决。。找了老半天都找不到。。。
回复 使用道具 举报
原来在哪里。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马