谁能告诉我为什么这个功能有用呢?

时间:2015-10-21 12:09:33

标签: php bit-manipulation operators swap

function swap(&$a,&$b)
{

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

}
RT,为什么它可以交换两个数字或字符串?

2 个答案:

答案 0 :(得分:3)

这称为XOR交换。 XOR有趣的财产。

  • XOR A = 0
  • XOR 0 = A

基本上,

$a = $a ^ $b;
$b = $a ^ $b;  // which is $b = a XOR b XOR b = a
$a = $a ^ $b;  // which is $a = a XOR b XOR a = b

但是,我不建议您使用XOR交换。它使用临时变量的性能不如swap。如果每个人都对这个可爱的神奇XOR算子感兴趣,那么有一些有趣的算法建立在同样的概念上:

答案 1 :(得分:0)

如果你的C / C ++概念很清楚,你可以简单地理解它。

^正如XOR (希望您对数字电子OR,AND等有所了解)

以简单的方式假设

$a=20;
$b=30;

function swap($a,$b) {
$a=$a*$b;
$b=$a/$b;
$a=$a/$b;
}

输出:$ a = 30,$ b = 20

您可以通过多种方式使用它,例如

function swap($a,$b) {
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
}