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这里的源码中抽出来的。
可能我问的有问题,大神也可以从这里面找寻答案。

能清理一下程序运行的过程中,变量值的变化。
展开
 我来答
Alljhatv
推荐于2017-09-25 · TA获得超过681个赞
知道小有建树答主
回答量:408
采纳率:87%
帮助的人:191万
展开全部

这是异或运算符,按二进制位进行异或运算(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

zmspu1
2014-02-05 · TA获得超过289个赞
知道小有建树答主
回答量:1425
采纳率:100%
帮助的人:983万
展开全部
这是按位与,这个你具体可以搜索一下 PHP 按位与,你就懂了
追问
可是,按位与 是两个整数之间的操作吧?结果也应该是整数啊?!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李亦天_Pope
2014-02-06
知道答主
回答量:41
采纳率:0%
帮助的人:19万
展开全部
我记得学PHP时是和运算符一起学的。什么相位与……觉得没有用就没研究
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式