Na linguagem Java, os operadores unários “!” e “~” estão re...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - “~” calcula o complemento do operando bit-a-bit.
Vamos entender melhor o assunto para que você possa compreender o porquê dessa alternativa ser a correta. Na linguagem Java, temos operadores que atuam em nível de bit, o que significa que eles operam diretamente sobre os bits individuais dos operandos. Isso é algo um pouco diferente do que as operações lógicas regulares que você pode estar acostumado, que operam com valores booleanos ou numéricos em um nível mais alto.
O operador ! é um operador lógico de negação, ou seja, ele inverte o valor de um operando do tipo booleano. Se o operando for true, o resultado será false, e vice-versa.
Por outro lado, o operador ~ é um operador de negação bit-a-bit. Isso significa que ele inverte cada bit do operando. Se um bit é 0, ele muda para 1, e se é 1, muda para 0. Isso é conhecido como complemento binário. Importante notar que este operador é aplicável somente a valores numéricos inteiros, como byte, short, int, e long, já que apenas esses tipos de dados são representados em bits na memória.
Com isso em mente, a alternativa correta é a letra C, pois ela corretamente identifica que o operador ~ calcula o complemento bit-a-bit do operando. As demais alternativas são incorretas, pois ou atribuem características erradas aos operadores, ou não compreendem o tipo de dado sobre o qual o operador atua.
Espero que esta explicação tenha ajudado a entender a diferença entre esses dois operadores e a natureza de suas operações. Compreender esses conceitos é muito importante para a programação em Java, especialmente quando você está lidando com manipulação de baixo nível de dados binários ou lógica booleana.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O operador ~ produz um complemento bit a bit de seu operando invertendo cada bit:
class OperadorExemplo {
public static void main (String args []) {
int a = 10;
int b = -10;
boolean c = true;
boolean d = false;
System.out.println (~a); // - 11 (Inverte o sinal e subtrai com 1)
System.out.println (~b); // 9 (Inverte o sinal e subtrai com 1)
System.out.println (!c); // false (oposto ao valor booleano)
System.out.println (!d); // true
}
}
Resposta correta letra (C)
Pra quem quiser saber mais, encontrei informações nesse site: https://qastack.com.br/programming/791328/how-does-the-bitwise-complement-operator-tilde-work
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo