Что этот ~ оператор означает здесь?

Пример:

set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);

что это предполагает для значения?

14
задан openfrog 27 December 2009 в 23:18
поделиться

4 ответа

Это битовый неоператор (также называемый "дополнением"). То есть биты, установленные в ~ $a - это биты, которые не установлены в $a.

Таким образом,

E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE

- это биты, установленные в E_ALL, и биты, не установленные в E_STRICT, E_WARNING и E_NOTICE. В основном это означает все ошибки, за исключением строгих, предупреждающих и предупреждающих ошибок.

.
22
ответ дан 1 December 2019 в 06:31
поделиться

Это оператор bitwise-not . Например, битовое отрицание числа с двоичным представлением 01011110 было бы 10100001; каждый отдельный бит переворачивается на свою противоположность

.
16
ответ дан 1 December 2019 в 06:31
поделиться

См. Побитовые операторы : это оператор "не" (цитирование) :

~ $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 в intput -- и наоборот,

.
1
ответ дан 1 December 2019 в 06:31
поделиться

Это оператор не в битовом режиме . О битовых операторах читайте здесь:

http://php.net/manual/en/language.operators.bitwise.php

1
ответ дан 1 December 2019 в 06:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: