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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wkz_crystal 中级黑马   /  2015-3-14 00:58  /  1410 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

例如:
交换数据n和m
交换的核心代码部分怎样理解:想了很久没有领悟到呀……急……
n=n^m;
m=n^m;
n=n^m;
这时候就已经交换了,可是没有理解到,想不通!!求具体的思想……

4 个回复

倒序浏览
举个例子来讲解这三句话  
int n = 10 ; int m = 20
n=n^m;这里右边参与运算的  n = 10   m = 20
运算结果    n = 10^20m=n^m;
这里的右边参与运算的n = 10^20   m=20
运算结果  m = 10^20^20 = 10
n=n^m;   
这里参与运算 n = 10^20    m = 10^20^20 =10
运算结果  n = 10^20^10 = 20





回复 使用道具 举报
一个数异或同一个数两次,结果还是那个数。
int   m=3,n=8;
n=n^m;//8^3
m=n^m;//(8^3)3
n=n^m;//在拿的m就是上面得到的m的值为8,n的值是8^3,所以(8^3)8.
结合代码好好理解一下就OK了!当时这里我也想了好久。
回复 使用道具 举报
是的,一个数异或同一个数两次,结果还是那个数。
最好拿具体的数值来帮忙理解
回复 使用道具 举报
非常感谢你们,结合你们的举例思想,终于想通了,万分感谢!
之前我是主要是没有想通第三个表达式!呵呵
int   m=3,n=8;
n=n^m;//8^3
m=n^m;//(8^3)3 结果就是m=n
n=n^m;  我想成:n = n^(n^m),结果为:n=m,又把m值赋值回去了,那就相当于没有完成交换,呵呵……现在一起都明白了,谢谢大家……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马