黑马程序员技术交流社区
标题:
亦或的运算
[打印本页]
作者:
xinchi
时间:
2015-9-21 22:25
标题:
亦或的运算
int a=2,b=6;
a=a^b;
b=a^b;
a=a^b;
System.out.println("a="+a+", b="+b);
结果是多少?为什么?
作者:
pengwei1989
时间:
2015-9-21 22:37
结果是a=6,b=2
作者:
召唤吧Bymax
时间:
2015-9-21 22:40
这就是两个变量互换的第二种方式啊
作者:
maxwell247
时间:
2015-9-21 22:50
这是典型的两数交换的算法。
异或有一个特性。 如果 a 异或两次b,那么结果还是a。
为什么呢? 应为 a^b^b == a^(b^b)
作者:
往事如风555
时间:
2015-9-21 23:04
a=a^b;
b=a^b;
a=a^b;
这个相当于a、b互换,一个数a被同一个数b 按位异或 偶数次,结果还是这个数a
作者:
三川草民
时间:
2015-9-21 23:07
本帖最后由 三川草民 于 2015-9-21 23:08 编辑
结果是a=6,b=2
这是因为:一个数据对另外一个数据两次异或就等于该数据本身
从第2步开始
b=a^b^b=a(把a=a^b代入)
第3步
a=a^b^a=b(把a=a^b代入,而此时b=a也代入)
该程序相当于交换a,b的值。
作者:
sharpCsu
时间:
2015-9-22 00:04
按照基本方法一步步推理
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2