黑马程序员技术交流社区

标题: 位运算问题 [打印本页]

作者: 沙子    时间: 2014-12-16 22:24
标题: 位运算问题
请问如何利用位运算来交换两个整数?举例说明一下。

作者: 叫我小强    时间: 2014-12-16 23:30
一个数据对同一个数据异或两次,结果还是数据本身
例如: a^b^b=a

将两个数位置进行调换的话就用下面这个
a=a^b;
b=a^b;
a=a^b;
一般情况下使用第三方变量将两个数进行换位
int temp = a;
a = b;
b = temp;
作者: 冷风    时间: 2014-12-16 23:34
a=a^b;
b=a^b;//b=(a^b)^b   
a=a^b;//a=(a^b)^(a^b^b)  
作者: 牧歌    时间: 2014-12-16 23:39
同一个数异或同一个数两次还是原数啊。
作者: Lscreat    时间: 2014-12-16 23:41
学到了,谢谢啊。
作者: 木乃伊    时间: 2014-12-16 23:49
答得好详细:sleepy:
作者: 时间都去哪了    时间: 2014-12-16 23:51
^这就是我的小尾巴,不信你踩踩
作者: Bali    时间: 2014-12-17 00:13
int a=1,b=2;

a=a^b;
b=a^b;
a=a^b;

输出a和b就ok了!
作者: x277402301t    时间: 2014-12-18 00:17
一个如果异或同一个数两次就等于他本身
作者: 林文龙    时间: 2014-12-18 05:43
毕姥爷的基础视频里面有讲到三种:一种是最直接的:使用中间值:int temp = a;
a = b;
b = temp;优点:直观,阅读快高;
二:逻辑型:int a=4;int b=8;
a=a+b;
b=a-b;
a=a-b;
三,技巧型:a=a^b;
b=a^b;
a=a^b;




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