黑马程序员技术交流社区
标题:
位运算的应用___两个数交换位置
[打印本页]
作者:
熊永标
时间:
2013-3-29 15:39
标题:
位运算的应用___两个数交换位置
两个数交换位置有三种算法,分别为:
int a=8;
int b=7;
第一种:第三方变量
int temp=a;
a=b;
b=temp;
第二种:计算总和
a=a+b;
b=a-b;//得到a
a=a-b;//得到b
第三种:异或位运算
a=a^b
b=a^b//a^b^b
a=a^b//a^(a^b)
总结:第二种和第三种利用的是同一种思想,就是计算一个数与要进行换位的值相关,然后通过反相计算,最后得取结果
作者:
贺靖轩
时间:
2013-3-29 16:35
本帖最后由 贺靖轩 于 2013-3-29 16:36 编辑
呵呵 我混个分 补充点细节
关于第一种:毕老爷推荐使用,为啥?码农大神都看得懂。
关于第二种 : 如果这个两个数字相当大,则会有数据泄漏的危险。如 INT类型的两个数字,2147483648 与 2147483647的交换,写个小程序运行下就发现问题了
关于第三种:如果你像我一样喜欢简约风格的话,这里还有一种方式来兼容我们简单粗暴的思维:
a^=b;
b^=a;
a^=b;
O 了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2