黑马程序员技术交流社区

标题: java用异或运算交换两个变量的值分析 [打印本页]

作者: ToGame    时间: 2015-9-15 18:21
标题: java用异或运算交换两个变量的值分析
交换两个变量的值,最有常用的方法就是使用临时变量了
   例:
        int  temp=a;
        a=b;
        b=temp;

这种是最常见的:
      但还有另一种方法:
                          就是异或运算:
                                 a=a^b;
                                 b=a^b;
                                 a=a^b;
这才是我要讲的:
              我是用代入法的思想来理解它:
                                      b=a^b用代入法则是    b=a^b^b
                                       根据异或规则,一个数据被同一个数据异或两次则返回原值
                                      因此这里返回的是a,等价于b=a;
                                      
                                      第二个 a=a^b;用代入法后的原始公式是    a=(a^b)^(a^b^b)
                                                                              计算后的公式    a=a^b^a
                                       因此这里返回的是b
                                       
                                       到此交换就完成了,OK

作者: guoqule    时间: 2015-9-15 18:56
讲的不错
作者: 往事如风555    时间: 2015-9-16 21:46
一个数据被同一个数据异或两次则返回原值,你这只是一个结论,要解释一下的




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