Você está aqui: JavaScript ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
JavaScript Avançado - Como usar o operador de bits & (E/AND sobre bits) da linguagem JavaScriptQuantidade de visualizações: 1289 vezes |
O operador de bits & (E/AND sobre bits) da linguagem JavaScript é usado quando queremos comparar os bits individuais de dois valores integrais (inteiros) e produzir um terceiro resultado. Os bits no resultado serão configurados como 1 se os bits correspondentes nos dois outros valores foram 1. Em caso contrário os bits são configurados como 0. Para quem gosta de Lógica Matemática, ou a Tabela Verdade da Lógica de Boole, vai se lembrar do conectivo "^", que diz que a proposição resultante da conjunção só será verdadeira quando as proposições simples individuais forem verdadeiras. O operador de bits & do JavaScript é similar ao conectivo "^" da Lógica Proposicional. Vamos analisar os seguintes valores binários: a) 0101 (5 decimal) b) 0100 (4 decimal) Quando aplicamos o operador & nestes dois valores teremos o seguinte resultado: 0101 0100 ---- 0100 Veja que o resultado é 0100, uma vez que apenas o segundo bit de cada valor está configurado como 1. Vamos ver isso em JavaScript agora. Observe o seguinte trecho de código: <html> <head> <title>Manipulação de Bits em JavaScript</title> </head> <body> <script type="text/javascript"> var a = 5; var b = 4; var c = a & b; // exibe o resultado (em binário e em decimal) document.writeln("a = " + obterBits(a) + " (" + a + ")"); document.writeln("<br>b = " + obterBits(b) + " (" + b + ")"); document.writeln("<br>a & b = " + obterBits(c) + " (" + c + ")"); // função auxiliar que converte um decimal em sua representação em bits function obterBits(valor){ var mascara = 1 << 31; // 10000000 00000000 00000000 00000000 var buffer = ""; // um buffer para guardar os bits dos bytes for(var i = 1; i <= 32; i++){ // compara os bits individuais dos dois valores inteiros if((valor & mascara) == 0){ buffer = buffer + "0"; } else{ buffer = buffer + "1"; } valor = valor << 1; // desloca uma posição para a esquerda // Cada troca à esquerda corresponde à multiplicação do // valor por 2 if(i % 8 == 0){ // completou um byte? buffer = buffer + " "; } } return buffer; } </script> </body> </html> Ao executar este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00000101 (5) b = 00000000 00000000 00000000 00000100 (4) a & b = 00000000 00000000 00000000 00000100 (4) |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de JavaScript |
Veja mais Dicas e truques de JavaScript |
Dicas e truques de outras linguagens |
QGIS - Como retornar o título do projeto do QGIS usando PyQGIS e a função title() da classe QgsProject |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |