谁能告诉我为什么这个功能可以工作?
who can tell me why can this function work?
function swap(&$a,&$b)
{
$a=$a^$b;
$b=$a^$b;
$a=$a^$b;
}
RT,为什么可以交换两个数字或字符串?
这称为异或交换。 XOR 有有趣的 属性。
- 异或 A = 0
- A 异或 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 运算符感兴趣,那么有一些基于相同概念的有趣算法:
如果你的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;
}
function swap(&$a,&$b)
{
$a=$a^$b;
$b=$a^$b;
$a=$a^$b;
}
RT,为什么可以交换两个数字或字符串?
这称为异或交换。 XOR 有有趣的 属性。
- 异或 A = 0
- A 异或 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 运算符感兴趣,那么有一些基于相同概念的有趣算法:
如果你的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;
}