异或原理分析

/*
1.基础知识:
    6和7 异或操作后值为1
    分析:
        二进制为:
            6  -> 110
            7  -> 111
            结果: 001
        异或的原理就是  相同的位 值都为1 那么异或的结果就为0  不同的时候就是 或操作
        
        记住下面两句,交换两个数的时候会用到
        N ^ 0 = N
        N ^ N = 0

        那么总结一句话就是: 无进位相加
        举例:  8 ^ 3      14  ^ 5
               1000        1110
               0011        0101
          结果:1011        1011

          扩展: a^b^c^d^e   无论顺序是什么样 结果都不会变   满足 结合律与交换律
                  假设 abcde 只有5位
                  a     b     c     d     e     那么结果是什么  结论 如果五个数单一位上的 1 和 是2的倍数(0除外) 那 这个位的结果就是0  如果不是 则结果是1 如果和是0 结果是0
              4   1     0     1     0     1     1
              3   0     1     0     0     0     1
              2   1     1     1     1     1     1
              1   0     1     1     0     0     0
              0   0     1     0     1     1     1

         那么如果交换两个数怎么用位操作去做
        
        int a = 甲, b = 乙
        只需要三行代码 就可以交换  流程与分析如下
        a = a ^ b;     此时 a = 甲 ^ 乙;
        b = a ^ b;     b = a ^ b = 甲 ^ 乙 ^ 乙 = 甲;
        a = a ^ b;     a = a ^ b = 甲 ^ 乙 ^ 甲 = 乙;
        
        所以结果是  a = 乙,b = 甲;
        
        注意:不要交换同一片内存地址的值  比如交换数组下标相同的值  arr 交换 i j位置的值  要保证 i != j 否则结果是0 
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值