黑马程序员技术交流社区

标题: 对两个变量的数据进行互换,不需要第三方变量 [打印本页]

作者: hellotaomi    时间: 2015-5-26 22:54
标题: 对两个变量的数据进行互换,不需要第三方变量
在对两个两个变量的数据进行互换,不需要第三方变量时(例如:a=3,b=5,变成:a=5,b=3),我看到有一种方式是这样的:
a = a ^ b;
b = a ^ b;
a = a ^ b;
但是据我所知“^”是异或运算符,其作用是比较两个数值是否相同,相同为false,不同则为true。
既然异或的结果是boolean型的值,那最终又怎么会完成两个int型数值的交换的呢?求大神解释下!


作者: 黯然残影    时间: 2015-5-27 00:14
不错,学习学习
作者: 林思奇    时间: 2015-5-27 00:27
一个数异或另一个数两次,还是原数        第一次异或a=a^b     第二次b=a^b 即(a^b^b) =a      a=a^b这个b已经是a了  即(a^b^a)
作者: 微凉的暮色    时间: 2015-5-27 00:29
我帮你完善下:
但是据我所知“^”是异或运算符,其作用是比较两个数值是否相同,相同为false,不同则为true。
这些都对,
不过有个前提 异或的运算对象是二进制  例如 6=6^2^2
    110  =6
^  010  =2
---------------------
    100  =4
^  010  =2
---------------------
    110  =6
:lol 这样明白了吧
作者: mmakun    时间: 2015-5-27 08:40
可以这样:a=a+b;b=a-b;a=a-b
作者: hellotaomi    时间: 2015-5-27 08:58
微凉的暮色 发表于 2015-5-27 00:29
我帮你完善下:
但是据我所知“^”是异或运算符,其作用是比较两个数值是否相同,相同为false,不同则为true ...

哦,原来是这样的,一下子就忽然明白了,谢谢啦~
作者: kmlitheima    时间: 2015-5-27 11:58
你还没有看到问题的本质,这个是操作数据的,返回的结果是相应的数值,不是什么boolean类型数据!




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