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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

李恒杰

初级黑马

  • 黑马币:31

  • 帖子:18

  • 精华:0

今天在看毕老师的视频,由于没有基础,自学,在异或这个例题上有点迷糊,大神给讲解一下,谢谢!
原题:
n=3,m=8,需求:让n=8,m=3.
代码:
int n=3,m=8;
n=n^m;
m=n^m;
n=n^m;
最后一句,我不懂,哪位大神给我讲解一下,谢谢啦!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 加油!

查看全部评分

4 个回复

倒序浏览
本帖最后由 提米特 于 2014-12-26 18:34 编辑

这个就是实现两个变量的值交换的方法:
int n=3,m=8;
n=n^m;     此时:n=3^8  
m=n^m;    此时:m=3^8^8=3 相当于把最初n的3赋给了m
n=n^m;     此时:n=3^8^3=8^3^3=8   实现了把m的值赋给n

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
提米特 发表于 2014-12-26 18:31
这个就是实现两个变量的值交换的方法:
int n=3,m=8;
n=n^m;     此时:n=3^8  

第三步:3^8^3=8^3^3数字的位置变化不影响结果,是吗?
回复 使用道具 举报
int n=3,int m=8;
二进制:3=0011   8=1000
计算过程:
n=n^m;     
           0 0 1 1
        ^ 1 0 0 0
       -------------
n  =     1 0 1 1            m = 1000

m=n^m;   
        1 0 1 1
     ^ 1 0 0 0
-----------------
m=   0 0 1 1      n =1011     此时:     m=3     

n=n^m;
           1 0 1 1
        ^ 0 0 1 1
--------------------------
n =      1 0 0 0      此时   n=8

通过此过程,m  n 就交换了过程

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
duluhua 发表于 2014-12-26 19:39
int n=3,int m=8;
二进制:3=0011   8=1000
计算过程:

谢谢,过程很详细,太感谢啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马