Operadores de shift!

Porfavor, Será quem agluem pode me explicar porque o valor da 4ª linha vale tudo isso?

int numero=-3; //numero vale -3 numero=numero>>1; //numero vale -2 numero=numero<<1; //numero vale -4 numero=numero>>>1; //numero vale 2147483646 numero=numero<<1; //numero vale -4

Na linha 3 o número está valendo -4, que em binário equivale a 1111 1111 1111 1111 1111 1111 1111 1100. (obtido pelo complemento de 2 do número 4)

Em seguida os bits são deslocados em uma posição e, além disso, como está usando o operador >>>, o bit de sinal (mais à esquerda) é preenchido com 0, resultando no número binário 0111 1111 1111 1111 1111 1111 1111 1110, que equivale ao número 2147483646 em base decimal.

pq eh o maior valor de Integer -1
pra verificar o maior valor de Integer faz

int maiorValor = Integer.MAX_VALUE;

Entendi!!
Obrigado, será que dar pra vse me dizer como passar numero negativo para binario?

faloww :wink:

[quote=pardim7]Entendi!!
Obrigado, será que dar pra vse me dizer como passar numero negativo para binario?

faloww :wink: [/quote]
A chave para esta conversão é o complemento de dois: http://en.wikipedia.org/wiki/Two%27s_complement.

Então a representação binária de -4 é obtido pelo complemento de dois do número 4.

O complemento de dois é feito tirando o complemento (inversão de todos os bits) de um número e somando 1 a este resultado.

Exemplo usando o número de 32 bits (que é o caso do tipo int):

0000 0000 0000 0000 0000 0000 0000 0100 // 4 em binário 1111 1111 1111 1111 1111 1111 1111 1011 // complemento 1 + // soma 1 1111 1111 1111 1111 1111 1111 1111 1100 // -4 em binário
O bit mais significativo representa o sinal negativo, ou seja, se estiver em 1 o número é negativo, caso contrário o número é positivo.

Obs.: O complemento de dois é usado para compensar o 0. Pois a faixa positiva vai de 0 a 2147483647 (considerando número de 32 bits) e, como não existe o -0, a faixa negativa vai de -1 a -2147483648. Por isso é feita aquela soma no complemento.

Brigadaão ai amigo!!
entendi aqui!
Abraçoss