Nenhum produto encontrado nessa seleção.
Operadores bit-a-bit em PHP (também conhecidos como operadores bitwise ou binários) trabalham em um nível de abstração bem mais baixo, diretamente com a representação binária do valor em questão. Eles podem ser utilizados para realizar comparações binárias, inversões de bits do operando, deslocar bits para a direita ou esquerda, e assim por diante.
A tabela abaixo mostra os operadores bit-a-bit disponíveis no PHP:
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") |
Esta tabela pode ser encontrada no próprio manual do PHP.
Vamos ver alguns exemplos abaixo.
Operador Bit-a-Bit & (AND – E)
O operador bit-a-bit & (and ou e) compara dois valores utilizando sua representação binária e retorna um novo valor. Nesse caso, o interpretador do PHP vai comparar cada bit; quando os bits forem iguais a 1, 1 é retornado; quando ambos os valores forem 0, 0 é retornado; se os valores forem diferentes, 0 é também retornado.
Veja o exemplo abaixo:
<?php // 00001010 $a = 10; // 01101001 $b = 105; $c = $a & $b; # 01101001 # & 00001010 # = 00001000 // Exibe 8 Na tela // 00001000 echo $c; ?>
Operador Bit-a-Bit | (OR – OU)
O operador bit-a-bit | (or / ou) comparara cada um dos bits do valor e retorna um novo valor. A comparação é feita da seguinte maneira:
- Se qualquer um dos bits for igual a 1, 1 é retornado;
- Se ambos os bits forem 0, 0 é retornado.
Veja o exemplo:
<?php // 00001010 $a = 10; // 01101001 $b = 105; $c = $a | $b; # 01101001 # & 00001010 # = 01101011 // Exibe 107 Na tela // 01101011 echo $c; ?>
Operador Bit-a-Bit ^ (XOR)
O operador bit-a-bit ^ (xor) comparara cada um dos bits do valor e retorna um novo valor. A comparação é feita da seguinte maneira:
- Se os bits forem diferentes, 1 é retornado;
- Se os bits forem iguais, 0 é retornado.
Veja o exemplo:
<?php // 00001010 $a = 10; // 01101001 $b = 105; $c = $a ^ $b; # 01101001 # & 00001010 # = 01100011 // Exibe 99 Na tela // 01100011 echo $c; ?>
Operador Bit-a-Bit ~ (Not ou Não)
O operador ~ (não) inverte a posição dos bits ativos para não ativo em um único valor. Veja um exemplo:
<?php // 00000000000000000000000000001010 $a = 10; // 11111111111111111111111111110101 $a = ~$a; // Exibe -11 na tela echo $a; ?>
Perceba no trecho de código acima que onde tínhamos 0, agora temos 1, e onde tínhamos 1, agora temos 0.
Operador Bit-a-Bit >> (right shift)
O operador bit-a-bit >> (right shift) desloca bits para a direita. Cada deslocamento para a direita, é o mesmo que dividir o valor por 2.
Veja no exemplo abaixo:
<?php // 1010 $a = 10; // Desloca 1 bit para a direita $a = $a >> 1; // 101 // Exibe 5 na tela echo $a; ?>
Operador Bit-a-Bit >> (left shift)
O operador bit-a-bit << (left shift) desloca bits para a esquerda. Cada deslocamento para a esquerda, é o mesmo que multiplicar o valor por 2.
Veja no exemplo abaixo:
<?php // 1010 $a = 10; // Desloca 1 bit para a esquerda $a = $a << 1; // 10100 // Exibe 20 na tela echo $a; ?>
Concluindo
Como você pode perceber, estou mostrando os valores binários para que você entenda o que realmente acontecer por baixo dos panos, porém, se você utilizar o recurso indicado nos trechos de código acima, não verá nenhum valor binário, mas sim, números decimais comuns.
Para que você possa ver a representação binária de um valor numérico em PHP utilize a função decbin.
Exemplo:
<?php $a = 10; // Exibe 1010 na tela echo decbin($a); ?>
Aulas anteriores
Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.