Escovando bits em PHP: operações bitwise e uma função debug

Publicado por Marcio Merlone em 01/09/2007

[ Hits: 6.335 ]

Blog: http://merlone.ath.cx

 


Escovando bits em PHP: operações bitwise e uma função debug



As operações bitwise não são muito comuns de serem vistas por aí, poucos programadores as conhecem. Mas são extremamente poderosas devido à sua velocidade de execução.

Pra melhor explicá-las, imagine uma situação onde você tem uma série de chaves liga-desliga para, por exemplo, armazenar opções de um determinado objeto, que possuam valores verdadeiro ou falso. Poderíamos criar uma convenção sobre uma sequência de zeros e uns, onde cada posição teria um significado, por exemplo:

00000

Respectivamente, da direita pra esquerda, para as opções 1, 2, 3, 4 e 5. Portanto, se quiséssemos que somente a opção 2 estivesse ligada, com valor verdadeiro, teríamos:

00010

Bem simples, não? O que já vi fazerem é armazenar esta string no banco de dados. Tendo-se, por exemplo, 54 opções, teríamos uma string de 54 caracteres. Imagine o algoritmo pra testar isto, transformando a string em um array e lendo o elemento número 'N' para saber se a opção está ligada ou não, fora a alocação desnecessária de memória. Apesar de parecer lógico, é ineficiente, existe maneira melhor.

Veja o artigo completo em:

http://merlone.ath.cx/2007/08/08/escovando-bits-em-php-operacoes-bitwise/

Outras dicas deste autor

10 regras de ouro para inciar com código aberto

Remover espaços no fim de linha - Eclipse

Escovando bits em PHP - operações bitwise sobre grupos e permissões

Leitura recomendada

Integração com PagSeguro no CakePHP 2.x

Documentação do CodeIgniter em português

Tudo em Um - Site pessoal sobre PHP, HTML, CSS etc

Autenticar usuário e mostrar os membros de um grupo no site PHP via LDAP no AD W2K12

PHP + Shell script

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts