Operadores bit-a-bit permitem que você acione ou desligue bits específicos dentro de um inteiro. Se ambos os parâmetros da esquerda e da direita forem strings, esses operadores irão trabalhar nos valores ASCII dos caracteres.
<?php
echo 12 ^ 9; // Imprime '5'
echo "12" ^ "9"; // Imprime o caracter de volta (backspace - ASCII 8)
// ('1' (ASCII 49)) ^ ('9' (ASCII 57)) = #8
echo "hallo" ^ "hello"; // Imprime os valores ASCII #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
echo 2 ^ "3"; // Imprime '1'
// 2 ^ ((int)"3") == 1
echo "2" ^ 3; // Imprime '1'
// ((int)"2") ^ 3 == 1
?>
Exemplo | Nome | Resultado |
---|---|---|
$a & $b | E | Os bits que estão ativos tanto em $a quanto em $b são ativados. |
$a | $b | OU | Os bits que estão ativos em $a ou em $b são ativados. |
$a ^ $b | XOR | Os bits que estão ativos em $a ou em $b, mas não em ambos, são ativados. |
~ $a | NÃO | Os bits que estão ativos em $a não são ativados, e vice-versa. |
$a << $b | Deslocamento à esquerda | Desloca os bits de $a $b passos para a esquerda (cada passo significa "multiplica por dois") |
$a >> $b | Deslocamento à direita | Desloca os bits de $a $b passos para a direita (cada passo significa "divide por dois") |
Não desloque bits à direita maiores que 32 bits em sistemas 32 bits. E também a esquerda no caso do resultado ser um número maior que 32 bits.