Analise o trecho de código Java a seguir. int x = 5; x <<= 2; O valor final da variável x deve ser:
- A)0;
Errada, porque o deslocamento à esquerda aumenta o valor em vez de zerá-lo.
- B)1;
Errada, porque 5 deslocado duas posições à esquerda não resulta em 1.
- C)20;
Certa, pois 5 << 2 equivale a 5 x 4, resultando em 20.
- D)25;
Errada, porque 25 seria o valor de uma soma, não de um deslocamento binário.
- E)125.
Errada, porque 125 corresponde a 5³, e não ao efeito de << 2.
Gabarito: C
Em Java, o operador "<<=" faz um deslocamento de bits para a esquerda e, depois, guarda o resultado na própria variável. Na prática, isso equivale a multiplicar por 2 a cada posição deslocada. Então, se x começa com 5, ao fazer x <<= 2 você desloca dois bits para a esquerda, o que resulta em 5 x 2². Fazendo a conta: 5 x 4 = 20. Esse tipo de operação é bem comum em questões de concurso porque parece enigmática, mas a lógica é simples: deslocar à esquerda é "andar para a esquerda" no binário, acrescentando zeros no fim. Se você quiser enxergar em binário: 5 é 0101. Deslocando dois bits à esquerda, vira 010100, que corresponde a 20 em decimal. Nada de magia, só binário trabalhando em silêncio. Por isso, o gabarito C está correto. O operador de atribuição combinada primeiro aplica o shift e depois atualiza x com o novo valor.