Em Busca da “Zend PHP Yellow Pages”
Operadores – Parte IV – Operadores de Bits
Operadores de bits são usados para manipular bits de dados. Todos estes operadores são projetados para trabalhar apenas com números inteiros, por isso, o interpretador tentará converter os seus operandos para inteiros antes de executá-los.
O mais simples é operador de bit é o não binário, que negará todos os bits de um número inteiro.
Ex:
$x = 0;
echo ~$x; //irá imprimir -1
Um grupo de operadores binário é usado para executar a manipulação básica de bit, combinando os dois bits de seus operandos, de várias maneiras:
| & | Operador AND (e). O resultado da operação será um valor ativo caso eles estejam setados em ambos os operandos, e desativado caso contrário. |
| | | Operador OR (ou). O resultado da operação será um valor ativo caso eles estejam setados em algum dos operandos, e desativado caso não esteja em nenhum dos operandos. |
| ^ | Operador XOR (ou exclusivo). O resultado da operação será um valor cujo os bits serão ativos em um ou outro operando, e desativados caso contrario. |
Estas operações são todas muito simples, com a possível exceção do XOR (ou exclusivo), que pode parecer estranho à primeira vista. Na realidade, sua funcionalidade é bastante simples: se o bit à esquerda ou direita está configurado, o operando comporta exatamente como o OR (ou). Se ambos os bits estão ativados ou desativados, o resultado é simplesmente invertido.
Um terceiro conjunto de operadores é usado para transferir os bits da esquerda ou direita:
| << | deslocar bits para esquerda – Esta operação desloca à esquerda dos bits do operando por um número de posições igual ao direito do operando, introduzindo bits vazios nas posições de deslocamento. |
| >> | deslocar bits para direita – Esta operação desloca à direita dos bits do operando por um número de posições igual ao direito do operando, introduzindo bits vazios nas posições de deslocamento. |
É interessante notar que estas duas últimas operações proporcionam uma forma fácil (e muito rápida) de multiplicar inteiros com uma potência de dois. Por exemplo:
$x = 1;
echo $x << 1; // será impresso 2
echo $x << 2; // será impresso 4$x = 8;
echo $x >> 1; // será impresso 4
echo $x >> 2; // será impresso 2
Você deve, entretanto, estar ciente do fato que, mesmo que estas operações possam aproximar uma multiplicação ou uma divisão por uma potência de dois, não é exatamente a mesma coisa. Os cenários que podem ser obtidos resultados inesperados. Por exemplo, em uma máquina de 32 bits, vai acontecer o seguinte:
$x = 1;
echo $x << 32;
echo $x * pow (2, 32);
A segunda linha deste exemplo obterá saídas zero, porque todos os bits têm sido deslocado para fora do valor inteiro. Por outro lado, segundo o exemplo (que solicita o Pow () função para elevar o poder de 2 a 32) irá retornar o valor correto 4.294.967.296 que, casualmente, agora será um valor flutuante porque tal número não pode ser representado usando um inteiro de 32 bits.
| Print article | This entry was posted by Filippe on 15 de July de 2008 at 20:52, and is filed under php básico. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |