• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Operadores no Java – Bitwise AND

December 5, 2016 by Mauda 2 Comments

Conteúdo do Post:
  1. Operadores Bitwise
  2. Operador Bitwise AND
  3. Precedência dos Operadores
  4. finnaly{

Olá Pessoal, tudo bom?

Continuando nossa descrição básica sobre os operadores no Java, hoje é dia de falar sobre o operador bitwise AND. Esse operador, em conjunto com outros operadores Bitwise são raramente utilizados, eu particularmente nunca utilizei-os em um projeto profissional. Assim esse artigo será um pouco mais extenso que os outros, mas para que todos possam entender. A oitava parte desse artigo se encontra aqui. Confira na continuação desse artigo sobre o operador bitwise AND:

Operadores Bitwise

Bitwise é uma técnica que consiste, basicamente, em alterar a sequência de bits de uma instância. Normalmente isso é aplicado sobre representações de tipos primitivos de um número inteiro como long, int, short e byte, mas também pode ser aplicado ao tipo char.

Para trabalhar um pouco sobre essa técnica, nós precisamos descrever um pouco sobre matemática binária:

0 + 0 = 0

0 + 1 = 1

1 + 1 = 10

Como em Java um tipo primitivo que represente um inteiro é 32 bits. Dessa forma o bit com maior valor, primeiro da esquerda para direita, representa o sinal de positivo ou negativo. Os outros 31 bits podem representar qualquer número no intervalo -231 até o 231 – 1. De acordo com o artigo sobre tipos primitivos o int:

É um valor 32-bits inteiro assinado com complemento de dois. Seu intervalo de valores vai do -231 até o 231 – 1. A partir do Java 8 é possível representar o inteiro como um valor 32-bits não assinado, ou seja, somente para valores positivos que possuem o intervalo do 0 ao 232 – 1. Para conseguir representar como um inteiro positivo utilizar a classe wrapper java.lang.Integer.

Operador Bitwise AND

O operador bitwise AND é definidor pelo simbolo abaixo:

Operador Descrição
& Operador Bitwise para operações Bitwise do tipo AND

Para realizar o seu processo o operador aplica a tabela verdade do AND, conforme tabela abaixo, a qual indica que o bit será 1 apenas se ambos forem 1:

Bit 1 Bit 2 AND – Valor Final
0 0 0
0 1 0
1 0 0
1 1 1

Normalmente o Bit 1 pertence a uma instância que representa o valor (flag) a ser validado e o Bit 2 pertence a uma instância que representa a máscara de bits (bitmask). Mas porque o nome bitmask? Quando o AND é realizado, os bits zero na máscara escondem os bits um do flag. Se você pensar que os bits que possuem valor zero na máscara são opacos e os bits que possuem valor um são transparentes, somente os transparentes poderão ser visualizados, como buracos em uma máscara:

Java
1
2
3
4
      1 0 0 1 0 1 1 0     (Flag)
AND   0 0 0 0 0 0 1 0     (Bitmask)
      ---------------
      0 0 0 0 0 0 1 0     (Resultado da operacao)

 

Abaixo temos uma classe de exemplo que trabalha com o operador bitwise AND:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
package br.com.mauda.operadores;
 
public class OperadorBitwiseAND {
public static void main(String[] args) {
int bitmask = 0x000F; //Em binario 0000 0000 0000 1111
int flag    = 0x2222; //Em binario 0010 0010 0010 0010
                      //           ===================
                      //Em binario 0000 0000 0000 0010
int resultado = flag & bitmask;
System.out.println("Resultado da operacao bitwise AND: " + resultado);
}
}

O resultado da execução dessa classe será o seguinte:

Java
1
Resultado da operacao bitwise AND: 2

Precedência dos Operadores

Continuando a formular a tabela de precedência, agora segue o operador bitwise AND, o qual está abaixo dos operadores de igualdade, assim verifique a tabela abaixo:

Ordem Tipo de Operador Precedência
1 Pós Fixo expr++   expr–
2 Pré fixo e Unário    ++expr   –expr   +expr   -expr   !
3 Multiplicativo *    /    %
4 Aditivo +    –
5 Relacional >    >=    <=   <    instanceof
6 Igualdade ==    !=
7 Bitwise AND &
8 AND Lógico &&
9 OR Lógico ||
10 Ternário ? :
11 Atribuição =   +=   -=   *=   /=   %=

finnaly{

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Java, Operadores Tagged With: AND, bitwise, byte, char, int, long, short

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Comments

  1. Felipe Bezerra Lopes says

    April 13, 2020 at 8:28 pm

    Excelente explicação.

    Reply
    • Mauda says

      May 14, 2020 at 9:29 pm

      Olá Felipe, tudo bom?

      Obrigado pelo feedback! Isso significa muito pra mim!

      Precisando estamos por aqui!

      Obrigado!

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in