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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙子 中级黑马   /  2014-12-16 22:24  /  1260 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问如何利用位运算来交换两个整数?举例说明一下。

9 个回复

倒序浏览
一个数据对同一个数据异或两次,结果还是数据本身
例如: a^b^b=a

将两个数位置进行调换的话就用下面这个
a=a^b;
b=a^b;
a=a^b;
一般情况下使用第三方变量将两个数进行换位
int temp = a;
a = b;
b = temp;
回复 使用道具 举报
a=a^b;
b=a^b;//b=(a^b)^b   
a=a^b;//a=(a^b)^(a^b^b)  
回复 使用道具 举报
同一个数异或同一个数两次还是原数啊。
回复 使用道具 举报
学到了,谢谢啊。
回复 使用道具 举报
答得好详细:sleepy:
回复 使用道具 举报
^这就是我的小尾巴,不信你踩踩
回复 使用道具 举报
Bali 中级黑马 2014-12-17 00:13:13
8#
int a=1,b=2;

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

输出a和b就ok了!
回复 使用道具 举报
一个如果异或同一个数两次就等于他本身
回复 使用道具 举报
毕姥爷的基础视频里面有讲到三种:一种是最直接的:使用中间值: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;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马