首页 > 编程语言 > 详细

C/C++/Java不使用临时变量实现两个数的交换

时间:2015-03-25 15:21:30      阅读:230      评论:0      收藏:0      [点我收藏+]

方法一、加减减

        a = a + b;
        b = a - b;
        a = a - b;

方法二、异或运算(只能用于整数)

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

方法一好理解,加加减减就出来了,关于方法二,个人目前还不是很理解,如果有懂数学证明的不妨留言交流一下。异或运算就是将十进制数转换成二进制后,同位相同则取0,同位相异则取1。

只举例说明一下:

int a = 2 ;  0010

int b = 9;   1001

a = a ^ b ;          0010

                       ^  1001

                 a    =  1011


b = a ^ b;     1011

                  ^ 1001

              b =  0010 = 2

 

a = a ^ b;    1011

                 ^  0010

             a =  1001 = 9

C/C++/Java不使用临时变量实现两个数的交换

原文:http://blog.csdn.net/lingzhm/article/details/44621697

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!