使用位运算交换两个数

<?php

/**
    位运算原理
    两个数异或的结果再与其中一个数异或的结果是另外一个数

    这涉及到了离散数学中的异或的性质:
    1.交换律:A^B=B^A
    2.结合律: A^(B^C)=(A^B)^C
    3.恒等律:X^0=0
    4.归零律:X^X=0
    5.自反:A^B^B = A^0=A

    根据以上性质:
    A=A^B
    B=A^B
    A=A^B

    通过以上三步,能实现在程序中交换两个变量的数值的目标。
 */

/**
 * @desc: 使用异或运算交换两个数
 * @param null $str1
 * @param null $str2
 * @author: icehill
 */
function swopString(&$str1=null,&$str2=null){
    $str1=$str1^$str2;
    $str2=$str1^$str2;
    $str1=$str1^$str2;

}

$a='ABC';
$b='DEF';
swopString($a,$b);
var_dump($a);
var_dump($b);

$c=123;
$d=45;
swopString($c,$d);
var_dump($c);
var_dump($d);


文章已完
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处