黑马程序员技术交流社区

标题: ^运算符 [打印本页]

作者: 冯国强    时间: 2013-12-14 11:04
标题: ^运算符
n=n^m;
m=n^m;
n=n^m;
这里每次理解都很费劲,有没有好的记忆方法?
作者: Diaraelo    时间: 2013-12-14 11:15
本帖最后由 Diaraelo 于 2013-12-14 11:21 编辑

饿,不是很好记吗?右边都一样,左边nmn

非要说是记原理的话,这样记吧 ^ 第一次出现是加的意思, ^ 再出现就是减的意思

n=n ^ m  就是n = n + m
m=n ^ m ^m 就是 m = n+m-m=n
n=n ^ m 就是 n+m-n=m

最后结果就是n = m  和 m = n

作者: 绕世界流浪丶    时间: 2013-12-14 12:09
  1. n=n^m;
  2. m=(n^m)^m;
  3. n=(n^m)^m;
复制代码

记这个应该几句好理解一些了
作者: litaojisuanji    时间: 2013-12-14 12:13
左边就是n,m,n
右边都是n^m
很好记啊
n=n ^ m  
m=n ^ m   把这个n替换上面的式子 就相当 于m =n^m^m
根据一个数异或同一个数两次又是这个数 所以这时m等于前面的n了
n=n ^ m  把这个m替换上面的式子 就相当 于n = n^n^m
同理也就是前面的m了
作者: 松子    时间: 2013-12-14 12:14

^ 异或运算:true^true  结果为false,
                     true^false 结果为true,
       规律是:同真、同假 都为假;一真一假 则为真 。
       在二进制中,真用1代表,假用0代表,  都为1或0时是假,结果为0;一个是1一个是0时为真,结果是1。
              举个例子:int a = 3,b = 6;
                              转化成二进制 a:0011   b:0110
            0011
         ^0110
       ----------
            0101 --->转成十进制:5   即  3^6 = 5

n=n^m;  
m=n^m;  //m = (n^m)^m = n   n^了m两次,结果仍是n
n=n^m;  //n = (n^m)^n = m


这里记住一句话就OK啦:一个数^上另一个数两次,结果不变。






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