2011-04-08 11 views
6

Estaba viendo un código que da salida a un número en la forma binaria con los 0 anotados.Manipulación de bits de Java - ¿Qué hace (num >> = 1)?

byte number = 48; 
    int i = 256; //max number * 2 
    while((i >>= 1) > 0) { 
     System.out.print(((number & i) != 0 ? "1" : "0")); 
    } 

y no entendí qué hace i >> = 1. Sé que i >> 1 se desplaza hacia la derecha en 1 bit pero no entendió lo que hace "=" y AFAIK, no es posible hacer una búsqueda de ">> =" para averiguar qué significa.

+0

Una ligera mejora sería 'while ((i >>> = 1)! = 0)' ya que el bucle de corriente no haría nada si le diera 'i = 1 << 31' y nunca podría imprimir el parte superior de un número de 32 bits. –

Respuesta

11

i >>= 1 es sólo shorhand para i = i >> 1 de la misma manera que i += 4 es corto para i = i + 4

EDIT: Específicamente, esas son ambos ejemplos de compound assignment operators.

+1

Y, específicamente, es un turno de extensión de letreros. –

+0

Matemáticamente desplazar a la derecha un número por 1 es equivalente a dividir el número por 2. – yasouser

Cuestiones relacionadas