黑马程序员技术交流社区

标题: 关于位运算的对两个数进行交换位置(不用第三方变量) [打印本页]

作者: 编程的梦想    时间: 2013-11-3 12:32
标题: 关于位运算的对两个数进行交换位置(不用第三方变量)
int n=6,m=9;
n=n^m;
m=n^m;
n=n^m;//为什么这里的n还是原来的n,n在n=n^m运算时不是已经改变了吗?
作者: 回天之力    时间: 2013-11-3 14:29
            int a = 10;//a=1010;
            int b = 5;//b=101;  
            a = a ^ b;//1010^101=1111;              //a1=a^b;   可以先加上一个第三变量a1
            b = a ^ b;//1111^101=1010;b=10;     //b=(a1^b)^b;    这里的a已经是a1啦
            a = a ^ b;//1111^1010=101;a=5;       //a=a1^(a1^b);   这里的a都是a1,但是b的值一直没有改变,所以这个式子中跟a1的值无关。
希望在好好参详一下,品味一下就哦了。
  
a=
作者: 编程的梦想    时间: 2013-11-3 16:37
嗯嗯,我看懂了,谢谢!{:soso_e156:}
作者: 孙涛00    时间: 2013-11-3 18:21
在数值范围确定后:交换两个数n,m的值,不用到中间变量,还介绍一种方法(以int型为例)
int n,m;
n=n+m;
m=n-m;
n=n-m;
作者: 回天之力    时间: 2013-11-4 13:39
编程的梦想 发表于 2013-11-3 16:37
嗯嗯,我看懂了,谢谢!

no thanks   共同进步  哈哈




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