PHP: Operadores Bitwise

Quando é feita uma comparação bitwise, os valores são convertidos para sua representação binária, caso seja uma string, ela é convertida para o seu valor na tabela ASCII.

Exemplo:
[php]
$valor1 = 5; // 00000101
$valor2 = 2; // 00000010
[/php]

Operador AND (&) -> Retorna um novo valor a partir da comparação de cada bit,
retorna 1(TRUE) quando ambos os bits forem iguais a 1 ou retorna 0(FALSE) quando um dos bits
é igual a 0;

[php]
var_dump($valor1 & $valor2); // 0101 & 0010 = 0000 -> 0
[/php]

Operador OR (|) -> Retorna um novo valor a partir da comparação de cada bit retornando 1(TRUE), quando um dos bits for igual a 1 e retorna 0 quando os ambos os bits forem iguais a 0

[php]
var_dump($valor1 | $valor2); // 0101 | 0010 = 0111 -> 7
[/php]

Operador XOR (ˆ) -> Retorna 1(TRUE) quandos os bits comparados forem diferentes.

[php]
var_dump($valor1 ^ $valor2); // 0111 -> 7
[/php]

Operador NOT (~) -> Trabalha com apenas um operando, e inverte cada um dos seus bits, se o valor for posiivo, ele incrementa ++ e inverte o valor para negativo, se o valor for negativo, ele inverte para positivo e incrementa – -.
[php]
var_dump(~2); // -3
var_dump(~-2); // 1
[/php]

DESLOCAMENTO BINÁRIO

Deslocamento DIREITA (>>) -> Desloca os bits a direita, sendo o operador da direita o número de vezes que
os bits serão deslocados. Pode se dizer que o shift right é uma divisão por 2 elemvado a N.

[php]
var_dump(50 >> 2); // 12
[/php]

Deslocamento a ESQUERDA (<<) -> Desloca os bits a esquerda, sendo o operador da direita o número de vezes
que os bits serão deslocados. Pode se dizer que o shift left é a multiplicação por 2 elevado a N.
[php]
var_dump(50 << 2); // 200
[/php]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *