首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >E_ALL ^ E_NOTICE与E_ALL & ~E_NOTICE的区别

E_ALL ^ E_NOTICE与E_ALL & ~E_NOTICE的区别
EN

Stack Overflow用户
提问于 2014-03-05 21:16:35
回答 2查看 768关注 0票数 4

E_ALL ^ E_NOTICEE_ALL & ~E_NOTICE有什么区别?

据我所知,它们都排除了E_NOTICE级别的错误报告。但是在PHP.ini中使用的是表单&~,而我在很多地方都提到了表单^

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-05 21:24:51

^&~是有区别的,但在这种情况下没有区别。

^的意思是异或,因此在结果中设置了在左操作数或右操作数中设置的位数,但不能同时设置这两个操作数。&~意味着而不是,所以在结果中设置在左操作数中而不是在右边操作数中的位。

如果我们看一下以下数字,就会有不同之处:

代码语言:javascript
复制
$a = 0b1010; // decimal 10
$b = 0b0001; // decimal 1

$a ^ $b的结果是0b1011 (十进制11),而$a & ~$b则是0b1010 (十进制10)。

然而,E_ALL实际上是0b11111111 (也就是说,所有的位都被设置了;它实际上超过了8位)。因此,XOR实际上与和不相同。

代码语言:javascript
复制
$a = 0b11111111; // decimal 255
$b = 0b00000100; // decimal 4

$a ^ $b给出了0b11111011 (小数251),$a & ~$b也给出了。

票数 5
EN

Stack Overflow用户

发布于 2014-03-05 21:21:36

第一个表示法是E_ALLE_NOTICE之间的XOR。第二种表示法是按位表示的AND,其中有一个负值运算符应用于E_NOTICE。这两个条件在技术上并不等价,因为第一个XOR可以重写为((E_ALL & ~E_NOTICE) | (~E_ALL & E_NOTICE))

参考资料:php.net/manual/en/language.operators.bitwise.php

编辑完整性:正如Jack和lonesomeday所指出的,由于E_ALL将所有相关位设置为1,所以在特殊情况下,这两个条件是等价的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22209464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档