Wednesday, 25 February 2009

Trabajando con bits en Java

Muchas veces nos encontraremos que queremos trabajar a nivel de Bit dentro de aplicaciones en Java, y este nos ofrece la misma potencia que C a la hora de trabajar con los registros bit a bit. Los operadores más comunes en Java son los siguientes:

 &  AND (Y lógica)
| OR (O lógica)
~ NOT (Negación)
^ XOR (Suma exclusiva)
<< SHL (Rotación de bits a la izquierda)
>> SHR (Rotación de bits a la derecha)


  • Algunos ejemplos del funcionamiento de los operadores:
AND:
0 & 0 = 0;
0 & 1 = 0;

1 & 0 = 0;
1 & 1 = 1;

OR:
0 | 0 = 0;
0 | 1 = 1;

1 | 0 = 1;
1 | 1 = 1;

NOT:
~0 = 1;
~1 = 0;

XOR:
0 ^ 0 = 0;
0 ^ 1 = 1;

1 ^ 0 = 1;
1 ^ 1 = 0;

SHL:
0001 << 1 = 0010;
0010 << 1 = 0100;
0100 << 1 = 1000;
1000 << 1 = 0000; (no se conservan los bits)

SHR:
1000 >> 1 = 0100;
0100 >> 1 = 0010;
0010 >> 1 = 0001;
0001 >> 1 = 0000; (no se conservan los bits)

  • Agrupando operadores:
Podemos ir acoplando todos estos operadores en una misma operación, como por ejemplo negar un registro y rotarlo o hacerle una operación XOR:

int i = 00011001 (25 decimal)
int j = ~i << 1 =11100110 << 1 = 11001100 (204 decimal)




0 comments:

Post a Comment