Operadores << , >> e >>>

Em um simulado que fiz encontrei uma questão usando um dos operadores:

“<<” “>>” e “>>>” :Era mais ou menos assim:


public class TestBit { 

   public static void main(String[] args) { 
      int n = 4 << 1; 
      System.out.println(n); 
   } 
} 

A Resposta é: 8.
Procurando nas minhas apostilas achei uma definição para os operadores:

“Translação (bit a bit) à esquerda, direita sinalizada, e direita não sinalizada (o bit de sinal será 0)”

Mais ainda estou confuso. Se alguém puder me explicar como esses operadores funcionam eu agradeço!!!

4 em binario equivale a 000000100 … essa operação 4 << 1 significa deslocar todos os bits para a esquerda em 1 casa… portanto fica 00001000 o que resultará em 8… se fosse 4 >> 1, deslocaria para a direita, o que resultaria em 2…

mas caso voce esteja estudando scjp 5, fica tranquilo que esse conteudo nao será cobrado… esse conteudo era cobrado na prova scjp 1.4

ainda bem que não é cobrado na 5.
Mais valeu mesmo cara!!!

Apesar de imaginar que ja sabem mais os operadores válidos são: >, <, >= ,<=, !=, =, ==. Se vc achar alguma coisa estranha fora esses vai ver algo do tipo: ||, &&, | , &.

faltaram, pelo menos:

  • ! (ex.: !variavelBoolean)
  • instanceof (ex.: d instanceof Dog)
  • ? : (ex.: variavelBoolean ? <comandos_se_true> : <comandos_se_false>)

Esse faltou mesmo… :smiley:

Não é considerado um operador…

Conhecido como IF TERNÁRIO, não é considerado um operador

Cara quer ver um jeito fácil de aprender isso ai…

seguinte quando você faz assim:[code]

int n = 4 << 1;
[/code]

Você está fazendo um deslocamento a esquerda nesse caso (deslocamento da direito seria >> com esses operador…). Enfim, isso é a mesmo coisa que você fazer quatro vezes dois elevado a 1.

int n = 4 &lt;&lt; 2;// aqui é quatro vezes dois elevado a 2 ... 4 *2² ...

Espero ter ajudado

Verdade pessoal esse operador é chato huauha