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
Errada, porque os resultados do AND e do OR não batem com a comparação bit a bit de a e b.
- B)00001100 e 00111101
Certa, pois a & b = 00001100 e a | b = 00111101.
- C)00001111 e 00111111
Errada, porque 00001111 e 00111111 não são os resultados das operações dadas.
- D)11001110 e 00001100
Errada, pois os valores apresentados não correspondem nem ao AND nem ao OR dos operandos.
- E)01101100 e 00100101
Errada, porque os dois resultados estão incompatíveis com a aplicação dos operadores bitwise informados.
Gabarito: B
Operadores bitwise atuam bit a bit, isto é, comparando cada posição binária separadamente. No Java, o operador & faz AND: só resulta em 1 quando os dois bits são 1. Já o operador | faz OR: resulta em 1 quando pelo menos um dos bits é 1. Pense nisso como uma “conferência linha por linha” dos bits, sem drama e sem atalho. Vamos aos valores: a = 00111100 e b = 00001101. No AND, você compara cada posição: 00111100 & 00001101 = 00001100. Repare que só sobram os bits em que ambos têm 1 ao mesmo tempo. No OR, qualquer 1 já basta: 00111100 | 00001101 = 00111101. Por isso, o gabarito é a alternativa B. Ela traz exatamente os resultados 00001100 e 00111101, na ordem pedida pela questão. É uma conta direta de máscara binária, muito comum em Arquitetura de Computadores e lógica de programação. Resumo mental rápido: AND “filtra” bits, OR “soma presença” de bits. Se você olhar com calma posição por posição, a resposta aparece sem mistério.