黑马程序员技术交流社区

标题: 位运算的应用___两个数交换位置 [打印本页]

作者: 熊永标    时间: 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