Duvida com Shift <<

2 respostas
L

Tenho uma duvida, sou novo em Java e gostaria de saber o que siginifica quando

public static void main(String a[]){
	
		int number = 200 << 16;
		
		System.out.println(number);
	
	}

o valor retornado é: 13107200 o que significa?

2 Respostas

T
  1. Converta o valor 200 para binário (use a calculadora do Windows em modo científico, para facilitar)

200 decimal = 11001000 binário

  1. Ponha 16 zeros à direita desse número. Se o número de bits passar de 32 (se for um int) ou 64 (se for um long), tire os bits que sobraram à esquerda. Neste caso, temos apenas 24 bits, portanto não precisamos cortar os bits que passam de 32.

11001000 << 16 == 110010000000000000000000

  1. Converta de volta para decimal:

110010000000000000000000 (binário) = 13107200 (decimal)

L

thingol:
1) Converta o valor 200 para binário (use a calculadora do Windows em modo científico, para facilitar)

200 decimal = 11001000 binário

  1. Ponha 16 zeros à direita desse número. Se o número de bits passar de 32 (se for um int) ou 64 (se for um long), tire os bits que sobraram à esquerda. Neste caso, temos apenas 24 bits, portanto não precisamos cortar os bits que passam de 32.

11001000 << 16 == 110010000000000000000000

  1. Converta de volta para decimal:

110010000000000000000000 (binário) = 13107200 (decimal)

Muito Obrigado… Valeuuuu

Criado 26 de fevereiro de 2009
Ultima resposta 26 de fev. de 2009
Respostas 2
Participantes 2