marciolx
A linha:
int j = 017;
declara a variável j usando um literal int na forma octal:
017 = 7*(8^0) + 1*(8^1) = 71 + 18 = 7 + 8 = 15
A linha:
int i = (byte)j >> 2; //linha 1
usa o valor de j, 15, ou
0000 0000 0000 0000 0000 0000 0000 1111
o casting para byte é irrelevante, pois o operador binário >> converte seus operandos para pelo menos o tipo int.
deslocando os bits para a direita duas posições (>> 2) temos:
0000 0000 0000 0000 0000 0000 0000 0011
que é o valor 3 em decimal, mas que é impresso como 11 pelo método
toBinaryString, portanto a resposta é 11
egcoelho
Paulo_Silveira
fiquem tranquilos que nao vai cair nenhum exercicio que voces precisem transformar numero binario ou octal para decimal, ou o contrario.
Os de >> e << e >>> soh precisa saber o efeito deles, que eh a multipl/divisao por 2 (elevado ao indice) se for signed.
egcoelho
vc só nao irá passar para binary
mas todo o restante é o mesmo se trocarmos o Integer.toBinaryString(i) por i somente.