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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯国强 中级黑马   /  2013-12-14 11:04  /  1500 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

n=n^m;
m=n^m;
n=n^m;
这里每次理解都很费劲,有没有好的记忆方法?

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 1 0
  1. n=n^m;
  2. m=(n^m)^m;
  3. n=(n^m)^m;
复制代码

记这个应该几句好理解一些了
回复 使用道具 举报
左边就是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了
回复 使用道具 举报

^ 异或运算: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啦:一个数^上另一个数两次,结果不变。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马