Operador Shift (>>>)

7 respostas
L

Olá Galera, estou com uma duvida cruel

Meu Professor passou uma questão na prova, eu coloquei um resultado e ele deu errado, sendo que o compilador ECLIPSE mostrou o resultado igual o meu
Veja:

Fazer uma análise do operador indicado e retornar resultados

int x = 40;

int r = 0;

String b = “”;

System. out.println("----------");

System.out.println("X: " + x);

b = Integer.toBinaryString(x);

System.out.println("B: " + b);		

r = x >>> 1;

System.out.println("r: " + r);

b = Integer.toBinaryString®;

System.out.println("B: " + b);

System.out.println("Conferindo: " + Integer.parseInt(b,2));

coloquei o resultado 20, porque o operador >>>(shift) fala para andar 1 casa para direita; VEJA: [color=red](r = x >>> 1)[/color]
ele alegou que o compilador reconhece somente dois sinais de >>(shift), ele não reconhece o terceiro sinal
como no exercicio possui 3 sinais >>> o operador anda 2 casa para direita
a resultado segundo o professor é 10
não entendi a diferença do operador shift com tres sinais>>> para o shift com dois sinais >>
por favor me ajudem, acho que o professor esta errado

7 Respostas

A

Como assim ele não reconheceu o terceiro > ???

o >>> Shift para a Direita Sem-Sinal

Pelo que vi seu resultado está correto, e como você mesmo falou… o explique não mente…rsss !!! Mostre para ele

Att

L

Ele quiz dizer que o shift >>> e o shift >> são diferente
O shift >>> com numero 1 anda duas casa para Direita ex.(r = x >>> 1)
O shift >> com numero 1 anda uma casa para Direita ex.(r = x >> 1)
Segundo o Professor, o compilador não reconhece shift >>>, somente o shift >>

A

Realmente o shift >>> e shift >> são diferentes.

Mas a diferença se trata de quando estamos mexendo Com e Sem Sinal… esta é a diferença

Como assim não reconhece? ele converte para >> ? não compila?

Não entendi o que seu prof. quiz dizer com isto… !!! pelo que conheco ambos trabalham da mesma maneira… tirando a diferenca do sinal…

Mas para resolver é simples… rode no eclipse e pede para ele explicar o que o eclipse fez !!! :smiley:

Att

E

Bom, você vai encontrar na sua vida muitas peças raras como o seu professor.

Ele está errado e você está certa, e é isso que importa. Entretanto:

Não entre em confronto com ele; se ele não for um cabeça-dura, como costuma ocorrer com as pessoas que não sabem direito as coisas, talvez você possa explicar direito que mancada ele está fazendo (de preferência de modo discreto, para que ele não se sinta humilhado).

“>>>” é um operador específico do Java (não existe em C++, por exemplo) e ele faz o que você sabe o que ele faz (desloca os bits para a direita sem copiar o bit de sinal); a explicação dele é muito tosca e está completamente errada, mas não é você que tem de confrontá-lo na frente de todo mundo - isso dá problemas de autoridade, e você sabe que gente ignorante preza muito essa história de autoridade e não quer saber da verdade. É melhor explicar discretamente - talvez seja até o caso de mandar um email para ele, para que ele não se sinta humilhado por você saber mais que ele.

sergiotaborda

Seu professor está errado. Entre no site da sun, imprima a página sobre os operadores, e peça uma reavaliação da prova.
Se ele se negar vá na diretoria.

A

Concordo com o sergiotaborda

Mostre numa boa para ele, se ele não aceitar, então tem que chutar o balde… ehehehheeh

Att

pablosaraiva

Bom, concordo que você deve mostrar pra ele a diferença de um para o outro e que seu resultado está correto.

Mas se o número na entrada fosse negativo seu resultado estaria errado.

Bitwise and Bit Shift Operators

~ Unary bitwise complement
<< Signed left shift

Signed right shift

Unsigned right shift
& Bitwise AND
^ Bitwise exclusive OR
| Bitwise inclusive OR

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/opsummary.html

Criado 4 de novembro de 2009
Ultima resposta 4 de nov. de 2009
Respostas 7
Participantes 5