PHP:“^”符号在这里是什么意思?求助!

以下是几行PHP代码
下面的“^”,怎么会在两个String变量间作运算符?而且结果还是String!

$txt = "123";
$key = "U2FsdGV=";
$result = $txt[2] ^ $key[5]; //这里的“^”到底是个什么?怎么$result最后也是一个String变量

echo $result; //运行后,最后输出的是“t”,为什么?!

这个问题是从http://www.jb51.net/article/23148.htm这里的源码中抽出来的。
可能我问的有问题,大神也可以从这里面找寻答案。

能清理一下程序运行的过程中,变量值的变化。

这是异或运算符,按二进制位进行异或运算(XOR)。

其中:

0 ^ 0 = 0;
1 ^ 1 = 0;
0 ^ 1 = 1;
1 ^ 0 = 1;

举个例子:

echo 101 ^ 7; // 输出 98

为什么呢?下面就来分析一下。

101写成二进制是1100101;

7写成二进制是111,即0000111(将两个数的位数补成一样);

根据前面的表,按位运算:

    1 1 0 0 1 0 1
  ^ 0 0 0 0 1 1 1
---------------------
    1 1 0 0 0 1 0

就得到了二进制数1100010,转化为十进制就是98。


希望能解开您的疑惑。


参见:维基百科:逻辑异或:

http://zh.wikipedia.org/wiki/%E9%80%BB%E8%BE%91%E5%BC%82%E6%88%96

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-05
这是按位与,这个你具体可以搜索一下 PHP 按位与,你就懂了追问

可是,按位与 是两个整数之间的操作吧?结果也应该是整数啊?!

第2个回答  2014-02-06
我记得学PHP时是和运算符一起学的。什么相位与……觉得没有用就没研究
相似回答