Php 谁能告诉我为什么这个功能可以工作?

Php 谁能告诉我为什么这个功能可以工作?,php,bit-manipulation,operators,swap,Php,Bit Manipulation,Operators,Swap,RT,为什么它可以交换两个数字或字符串?这称为异或交换。XOR具有有趣的特性 异或A=0 异或0=A 所以基本上 function swap(&$a,&$b) { $a=$a^$b; $b=$a^$b; $a=$a^$b; } 但是,我不建议您使用XOR交换。它的性能不如使用临时变量进行交换。如果每个人都对这个可爱的神奇异或运算符感兴趣,那么有几个有趣的算法建立在这个相同的概念上: 如果您的C/C++概念清晰,您可以简单地理解它 ^担任XO

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

这称为异或交换。XOR具有有趣的特性

  • 异或A=0
  • 异或0=A
所以基本上

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

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

}
但是,我不建议您使用XOR交换。它的性能不如使用临时变量进行交换。如果每个人都对这个可爱的神奇异或运算符感兴趣,那么有几个有趣的算法建立在这个相同的概念上:


如果您的C/C++概念清晰,您可以简单地理解它

^担任XOR(希望您已经了解了一些有关数字电子或等的知识)

以简单的方式假设它

$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
输出:$a=30和$b=20

你可以在很多方面使用它,比如

$a=20;
$b=30;

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

非常感谢!我知道“^”的意思是xor,但我不知道$b可以改成那种形式。谢谢你的回答!我已经明白了
function swap($a,$b) {
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
}