Ejemplo:¿Qué significa este ~ operador aquí?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
¿qué se supone que significa?
Ejemplo:¿Qué significa este ~ operador aquí?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
¿qué se supone que significa?
Es el bitwise not operator (también llamado "complemento"). Es decir, los bits configurados en ~ $a
son los que no están configurados en $a
.
Entonces
E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE
es los bits puestos en E_ALL
y los que no están establecidos en E_STRICT
, E_WARNING
y E_NOTICE
. Esto básicamente dice todos los errores, excepto los estrictos, de advertencia y de notificación.
Es el bitwise-not operator. Por ejemplo, la negación a nivel de bits de un número con representación binaria 01011110
sería 10100001
; cada bit está volteado a su opuesto.
Ver Bitwise Operators: es el operador "not" (citando):
~ $a
bits que están activos en$a
están no se establece, y viceversa.
Lo que significa, tomando un ejemplo inspirado de lo que usted envió, que esta porción de código:
var_dump(decbin(E_STRICT));
var_dump(decbin(~E_STRICT));
Le conseguirá este resultado:
string '100000000000' (length=12)
string '11111111111111111111011111111111' (length=32)
(Añadir una par de 0
para el relleno a la izquierda de la primera línea, y verá lo que quiero decir)
Extracción del relleno de la segunda salida, se obtiene:
100000000000
011111111111
Lo que significa que el operador ~
dio un poco 0
para cada bit que era igual a 1
en el insumo de factor - y viceversa ,
Es el operador not
bit a bit. Lee sobre operadores de bits aquí:
La distinción entre bit a bit (&, |, ~) y no a nivel de bits (& &, ||,!) Se operadores se aplican a nivel de bits que a través de todos los bits de en el entero, mientras que no bit a bit trata un entero como un único valor "verdadero" (distinto de cero) o "falso" (cero).
Diga, $flag_1 = 00000001
y $flag_2 = 00000010
.Ambos serían "verdaderos" para las operaciones no bit a bit, ($flag_1 && $flag_2
es "verdadero"), mientras que el resultado de $flag_1 & $flag_2
sería 00000000 y el resultado de $flag_1 | $flag_2
sería 00000011. ~$flag_2
sería 11111101, que cuando se ejecuta a nivel de bit a una ejecución El resultado sería claro esa posición de bit (xxxxxx0x). $flag_2
bit-ORed a un resultado en ejecución sería establecer esa posición de bit (xxxxxx1x).
Aunque esa es la explicación técnica, esa explicación no es útil a menos que se dé cuenta de que 'E_STRICT',' E_WARNING', 'E_NOTICE' et. Alabama. son enteros y se combinan simultáneamente con el operador '' 'bitwise. – IQAndreas