php - leviton - operadores bit a bit
¿Cuál es la función del operador ~ bitwise(Tilde) (3)
Posible duplicado:
¿Qué significa este operador ~ aquí?
Bit no funciona en PHP (o cualquier otro idioma probablemente)
¿Puede alguien explicarme el operador ~
en PHP? Sé que no es un NOT-operator , pero ¿por qué PHP convierte la siguiente declaración al valor negativo de la variable menos uno?
$a = 1; echo ~$a // echo -2
$a = 2; echo ~$a // echo -3
$a = 3; echo ~$a // echo -4
Es un bit no.
Convierte todos los 1s a 0s, y todos los 0s a 1s. Entonces 1 se convierte en -2 (0b111111111110 en representación binaria).
Eche un vistazo al doc http://php.net/manual/en/language.operators.bitwise.php
Esto se llama aritmética del complemento de dos . Puedes leer sobre esto en más detalle aquí .
El operador ~
es un operador de negación binaria (en oposición a la negación booleana), y siendo eso, invierte todos los bits de su operando. El resultado es un número negativo en la aritmética del complemento de dos.
~
voltea todos los bits del número. En el complemento de dos (google), la negación matemática se puede lograr al voltear todos los bits y luego agregar 1. Si solo haces el primer paso (es decir, solo voltea los bits), tienes el inverso aditivo menos 1.