Operadores Bitwise permitem a avaliação e modificação de bits específicos em um tipo inteiro.
- E
&
- OU
|
- OU exclusivo
^
- Não
~
- Deslocar à esquerda
<<
- Deslocar à direita
>>
Os operadores bitwise: &
, |
, ^
comparam dois valores inteiros utilizando suas representações binárias, e retornam um novo valor.
Cada bit será comparado e a formação desse novo valor depende do operador que você usar.
Retorna 1
se ambos os bits comparados forem iguais a 1
, caso contrário, retorna 0
.
<?php
echo 9 & 7;
// 9 em binário é: 00001001
// 7 em binário é: 00000111
// resultado: 00000001
//Retorna: "1" que é o binário 00000001
Retorna 1
se um dos bits comparados for igual a 1
, caso contrário, retorna 0
.
<?php
echo 9 | 7;
// 9 em binário é: 00001001
// 7 em binário é: 00000111
// resultado: 00001111
//Retorna: "15" que é o binário 00001111
Retorna 1
se ambos os bits comparados forem diferentes, caso contrário, retorna 0
.
<?php
echo 9 ^ 7;
// 9 em binário é: 00001001
// 7 em binário é: 00000111
// resultado: 00001110
//Retorna: "14" que é o binário 00001110
Tem a função de Inverter bits
. O bit que era 0 se torna 1; e o bit que era 1 se torna 0.
<?php
$a = -9;
$a = ~$a;
echo $a;
//diferente dos outros exemplos aqui representamos o valor com 20 bits
// -9 em binário é: 11111111111111110111
// após a operação o é resultado: 00000000000000001000
//Retorna: "8" que é o binário 00000000000000001000
Desloca os bits de $a, $b passos para a esquerda (cada passo significa "multiplicar por dois");
Ou seja, $a << 7
, é o mesmo que multiplicar $a
por 2 sete vezes
.
<?php
$a = 9;
$b = 7;
echo $a << $b;
//Retorna: "1152" que é o resultado de 9*2*2*2*2*2*2*2
Desloca os bits de $a, $b passos para a direita (cada passo significa "divide por dois");
Ou seja, $a << 7
, é o mesmo que dividir $a
por 2 sete vezes
.
<?php
$a = 9;
$b = 7;
echo $a >> $b;
//Retorna: "0" que é o resultado de 9/2/2/2/2/2/2/2
//Se você fizer a operação acima na calculadora o resultado vai ser igual a 0.0703125
//o PHP retorna o valor inteiro nesta operação
- Bit é a menor unidade de informação na computação e pode ser 0 (zero) ou 1 (um), ligado ou desligado;
- Um byte tem 8 bits;
- Nao se preocupe com os operadores bit a bit por hora, basta que você conheça eles;
Ir para: 3.7 Operadores de Atribuição