Operadores de bits AND &, OR | e XOR ^ na linguagem Java

Vamos entender como utilizar os operadores de AND &, OR | e XOR ^ na linguagem Java.

Avatar


26 de Outubro de 2022

Fala, meus consagrados! Tudo beleza com vocês?

Vamos entender como utilizar os operadores de AND &, OR | e XOR ^ na linguagem Java.

Teoria

Os operadores de bits trabalham em nível de bits e com operandos numéricos. Para fazermos as operações de bits, primeiro, os transformamos os operandos da base decimal para a base binária e depois aplicamos as operações bit a bit para os operandos.

Os operadores AND, OR e XOR operam sobre literais inteiros. Os dois tipos dos literais inteiros em Java são:

  • int (sendo esse o padrão); e
  • long.

Como os operadores AND &, OR | e XOR ^ funcionam?

  • Para o AND, o resultado é um bit 1, se TODOS forem 1;
  • Para o OR, o resultado é um bit 1, se PELO MENOS um bit for 1; e
  • Para o XOR, o resultado é um bit 1, se os bits forem DIFERENTES.

Caso os operandos sejam booleanos, o resultado será idêntico ao obtido com operadores AND condicional e OR condicional, porém sem curto-circuito, ou seja, todos os operandos serão avaliados, mesmo sem necessidade.

Os operadores condicionais AND && e OR || possuem dois símbolos cada. Já os de bits AND & e OR | possuem apenas um cada.

Exemplos:

byte x = 93 & -21; // x recebe 73.
byte y = 93 | -21; // x recebe -1.
byte z = 93 ^ -21; // x recebe -74.

Para visualizarmos como chegamos ao resultado, veja a tabela 1.

Valor inicial

128

64

32

16

8

4

2

1

Valor final

93

0

1

0

1

1

1

0

1

93

-21

1

1

1

0

1

0

1

1

-21

&

0

1

0

0

1

0

0

1

73

|

1

1

1

1

1

1

1

1

-1

^

1

0

1

1

0

1

1

0

-74

Tabela 1: Visualizando o resultado das operações com os operadores AND &, OR | e XOR ^.

De acordo com a tabela 1, transformamos os valores 93 e -21 para a base binária e depois aplicamos os operadores. Com o resultado na base binária, transformamos para a base decimal e encontramos o resultado de cada operação:

  • 93 AND –21 é 73;
  • 93 OR –21 é –1; e
  • 93 XOR –21 é 74.

Questões de concursos

[FGV 2021 IMBEL – Supervisor – Tecnologia de Informação] Com relação aos operadores bitwise do Java, considere os valores binários

a = 00111100
b = 00001101

Os valores resultantes das operações a&b e a|b são, respectivamente,
[A] 00011100 e 11111101
[B] 00001100 e 00111101
[C] 00001111 e 00111111
[D] 11001110 e 00001100
[E] 01101100 e 00100101

Comentários:

A questão pede o resultado de a & b e a | b. Como as variáveis a e b já estão na base binária, basta aplicar os operadores bit a bit e saber o resultado de cada operação.

Variável e operação

128

64

32

16

8

4

2

1

a

0

0

1

1

1

1

0

0

b

0

0

0

0

1

1

0

1

&

0

0

0

0

1

1

0

0

|

0

0

1

1

1

1

0

1

^

0

0

1

1

0

0

0

1

De acordo com a tabela acima, temos:

a & b = 000001100
a | b = 00111101

Com isso, a letra b é o nosso gabarito.

Coloquei também o resultado com XOR ^ apenas para treinarmos:

a ^ b = 00110001

Gabarito: letra b.

Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo

Avatar


26 de Outubro de 2022