交换两个数的位置,不引入新参数–求异详解
交换两个数的位置,不导入新参数,目前常见的有三种办法:
1.引入新变量;
2.通过加减法;
3.异或;
前面两种都很好理解,关于异或往往只会会注释一句对一个值连续异或,结果还是他本身,今天就通过简单计算让大家进一步了解异或;
首先,讲一下概念,异或(xor)是一个数学运算符。它应用于逻辑运算。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。用通俗点的话说就是,两个值不同为真,两个值相同为假;
下面,我们取两个数进行简单的示例;
我们取3 ,二进制位0011,和4 ,二进制为0100;
0 0 1 1****3
^0 1 0 0****4
0 1 1 1****7
结果为0111,换成十进制结果为7,那么一定会有人认为这就是加法。我们把刚才得到的值继续处理;
0 1 1 1****7
^0 1 0 0****4
0 0 1 1****3
结果有变回了0011也就是3,即3 ^ 4 ^ 4=3.
所以我们通过 x=x^ y ; y=x^ y; x=x^ y;即可以交换两个参数的位置了。
不知道大家看完这边文章,对异或有没有更深一步的了解呢~