黑马程序员技术交流社区

标题: 对两个整数变量的值进行互换(不用第三方变量) [打印本页]

作者: 石三伢子1    时间: 2015-11-2 18:36
标题: 对两个整数变量的值进行互换(不用第三方变量)
    int a = 3,b = 5;

        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
看不明白,求解释;
作者: 260744042    时间: 2015-11-2 18:55
^:表示异或,两个二进制数相比,同是1或同是0则,结果为0,如11^11=00;
        相异则为1,如10^01=11,
        10
        01
---------
        11

a=3=011,b=5=101,

a = a ^ b; =====》011
                                   101
                                 ------
                                   110 = 6


b = a ^ b;======》110
                                   101
                                  -----
                                   011 = 3


a = a ^ b; ======》110
                                   011
                                  -----
                                   101 = 5
作者: 小鱼儿211    时间: 2015-11-2 20:09
int a = 3,b = 5;

        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
一个数位异或(^)另一个数两次,结果还是它本身,如2^5^5=2
a = a ^ b;
b = a ^ b = a ^ b ^b =a = 3(把上面的式子a = a ^ b代入);
a = a ^ b = a ^ b ^ a = b =5;(把上面的式子结果a = a^b,   b = a 代入);
作者: 石三伢子1    时间: 2015-11-3 09:31
谢谢各位前辈,分析的很清晰,一看就明白了;
作者: 宇婷    时间: 2015-11-3 09:54
我也看不明白




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