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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int a=10,b=9;
a=a^b;
b=a^b;
a=a^b;
NSLog(@"\na = %d\nb = %d",a,b);

这样做就能交换a和b的值,但是原理上是怎么一回事啊

4 个回复

倒序浏览
原理就是一个数连续异或另一个数两次,结果等于这个数本身,你把ab都用数字带入。然后一步一步的看。就明白了
回复 使用道具 举报
还没学到啊
回复 使用道具 举报
^异或运算:对应的二进制不同时为1,结果为1,否则为0
依次带入公式即可
回复 使用道具 举报
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;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马