Operadores << , >> e >>>

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

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

public class TestBit &#123;

	public static void main&#40;String&#91;&#93; args&#41; &#123;
		int n = 4 &lt;&lt; 1;
		System.out.println&#40;n&#41;;
	&#125;
&#125;

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!!!

Fiquei curioso em descobrir a resposta para a sua pergunta!

Achei o link abaixo que tem uma boa explição do funcionamento e exemplo de uso.

Boa leitura.

http://www.numaboa.com.br/informatica/java/matBitBit.php

Deslocamento de bits… isso é o típico exemplo de um escovador de bits :lol:

O esquema funciona deslocando os bits (binários) para a esquerda ou direita, dependendo do operador.
Exemplo:

   int n = 4 &lt;&lt; 1;

4 decimal em binário equivale à 00000100.
<< 1 nos diz que vamos deslocar 1 bit para a esquerda, o que nos dá em valor binário 00001000.
00001000 binário equivale à 8 decimal. :slight_smile:

Agora neste exemplo,

   int n = 4 &gt;&gt; 1;

vai deslocar 1 bit para a direita, o que nos dará 00000010, que em decimal equivale à 2.

Para fazer esse tipo de cálculo você deve conhecer muito bem as regras para converter binário <-> decimal.

Esse assunto cai somente na versão 1.4 da certificação… Se você estiver estudando para a versão 1.5, esse conteúdo não é solicitado :grin:

Abraços.