PHP:“^”符号在这里是什么意思?求助!
以下是几行PHP代码下面的“^”,怎么会在两个String变量间作运算符?而且结果还是String!$txt="123";$key="U2FsdGV=";$result=...
以下是几行PHP代码
下面的“^”,怎么会在两个String变量间作运算符?而且结果还是String!
$txt = "123";
$key = "U2FsdGV=";
$result = $txt[2] ^ $key[5]; //这里的“^”到底是个什么?怎么$result最后也是一个String变量
echo $result; //运行后,最后输出的是“t”,为什么?!
这个问题是从http://www.jb51.net/article/23148.htm这里的源码中抽出来的。
可能我问的有问题,大神也可以从这里面找寻答案。
能清理一下程序运行的过程中,变量值的变化。 展开
下面的“^”,怎么会在两个String变量间作运算符?而且结果还是String!
$txt = "123";
$key = "U2FsdGV=";
$result = $txt[2] ^ $key[5]; //这里的“^”到底是个什么?怎么$result最后也是一个String变量
echo $result; //运行后,最后输出的是“t”,为什么?!
这个问题是从http://www.jb51.net/article/23148.htm这里的源码中抽出来的。
可能我问的有问题,大神也可以从这里面找寻答案。
能清理一下程序运行的过程中,变量值的变化。 展开
3个回答
展开全部
这是异或运算符,按二进制位进行异或运算(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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |