示例:
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
这意味着什么?
答案 0 :(得分:21)
这是bitwise not operator(也称为“补充”)。也就是说~ $a
中设置的位是未在$a
中设置的位。
那么
E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE
是E_ALL
中设置的位以及E_STRICT
,E_WARNING
和E_NOTICE
中未设置的位。这基本上表示除严格,警告和通知错误之外的所有错误。
答案 1 :(得分:16)
这是bitwise-not operator。例如,具有二进制表示01011110
的数字的按位否定将是10100001
;每一位都被翻转到相反的位置。
答案 2 :(得分:6)
按位(&,|,〜)和非按位(&&,||,!)运算符之间的区别在于,在整数的所有位中应用按位而非按位将整数视为单个" true" (非零)或"假" (零)值。
说,$flag_1 = 00000001
和$flag_2 = 00000010
。两者都是" true"对于非按位运算,($flag_1 && $flag_2
是" true"),而$flag_1 & $flag_2
的结果为00000000,$flag_1 | $flag_2
的结果为00000011。{{ 1}}将是11111101,当按位与运行结果进行AND运算时清除该位的位置(xxxxxx0x)。 ~$flag_2
对运行结果进行按位运算将设置该位位置(xxxxxx1x)。
答案 3 :(得分:1)
请参阅Bitwise Operators:这是“非”运营商(引用):
~ $a
在$a
中设置的位是 没有设定,反之亦然。
这意味着,从你发布的内容中汲取灵感,这段代码:
var_dump(decbin(E_STRICT));
var_dump(decbin(~E_STRICT));
会得到这个输出:
string '100000000000' (length=12)
string '11111111111111111111011111111111' (length=32)
(在第一行的左侧添加几个0
用于填充,你会看到我的意思)
从第二个输出中删除填充,您得到:
100000000000
011111111111
这意味着~
运算符为每个位赋予0
位,该位在输入中等于1
- 反之亦然,
答案 4 :(得分:1)
这是not
按位运算符。在这里阅读有关位运算符的信息: