黑马程序员技术交流社区

标题: 怎么从原理上理解按位异或能交换两个数的值呢 [打印本页]

作者: Abuzzworld    时间: 2015-10-1 21:35
标题: 怎么从原理上理解按位异或能交换两个数的值呢
int a=10,b=9;
a=a^b;
b=a^b;
a=a^b;
NSLog(@"\na = %d\nb = %d",a,b);

这样做就能交换a和b的值,但是原理上是怎么一回事啊
作者: dai2686779    时间: 2015-10-1 22:11
原理就是一个数连续异或另一个数两次,结果等于这个数本身,你把ab都用数字带入。然后一步一步的看。就明白了
作者: 洪吉童    时间: 2015-10-1 22:37
还没学到啊
作者: i_iOS    时间: 2015-10-1 23:11
^异或运算:对应的二进制不同时为1,结果为1,否则为0
依次带入公式即可

作者: lvguodong    时间: 2015-10-1 23:19
int a=10,b=9;
a=a^b;
b=a^b;
a=a^b;

a=a^b === 3=10^9;
b=a^b === 10=3^9;
a=a^b === 9=3^10;




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