10-11-2012 02:13
Hola.
He estado repasando las colecciones de Java ya que quiero intentar de nuevo los arboles ... pero al mirar por ahí ejemplos de BitSet, me he encontrado con uno peliagudo, o al menos para mí:
Como podéis ver se trata de crear tres random, primero un byte, luego un short y por último un int. Lo que hace es recorrer sus bytes con el bucle, es decir, los 8 del byte, los 16 del short y los 32 del entero.
Lo que no entiendo muy bien, es exactamente lo que hace dentro del if, pero sé que al compilarlo, en la llamada al método printBitSet, muestra los bytes en forma binaria, y luego te dice las posiciones de los "1", eliminando los "0".
Por cosas así me planteo dejar la programación, ya que las matemáticas nunca se me han dado bien, y son muy importantes para sacar este tipo de cosas.
Un saludo.
He estado repasando las colecciones de Java ya que quiero intentar de nuevo los arboles ... pero al mirar por ahí ejemplos de BitSet, me he encontrado con uno peliagudo, o al menos para mí:
Código:
import java.util.*;
public class java414{
public static void main(Strin args[]){
Random aleat = new Random();
byte bt = (Byte)aleat.nextInt();
BitSet bbyte = new BitSet();
for(int i=7; i >= 0; i--){
if(((1 << i) & bt) != 0)
bbyte.set(i);
else
bbyte.clear(i);
}System.out.println("Valor byte: "+bt);
printBitSet(bbyte);
short st = (short)aleat.nextInt();
BitSet bshort = new BitSet();
for(int i=15: i >=0; i--){
if(((1 << i) & st) != 0)
bshort.set(i);
else
bshort.clear(i);
}
System.out.println("Valor short: "+st);
printBitSet(bshort);
int it = aleat.nextInt();
BitSet bint = new BitSet();
for(int i=31; i>= 0; i--){
if(((1 << i) & it) != 0)
bint.set(i);
else
bint.clear(i);
}
System.out.println("Valor int: "+it);
printBitSet(bint);
BitSet b1 = new BitSet();
b1.set(127);
System.out.println("Fija el bit 127: "+b1);
BitSet b2 = new BitSet(65);
b2.set(255);
System.out.println("Fija el bit 255: "+b2);
BitSet b3 = new BitSet(512);
b2.set(1023);
System.out.println("Fija el bit 1023: "+b3);
}
static void printBitSet(BitSet b){
System.out.println("Bits: "+b);
String bbits = new String();
for(int j=0; j < b.size(); j++)
bbits += (b.get(j) ? "1" : "0");
System.out.println("Patron de bits: "+bbits);
}
}
}
Como podéis ver se trata de crear tres random, primero un byte, luego un short y por último un int. Lo que hace es recorrer sus bytes con el bucle, es decir, los 8 del byte, los 16 del short y los 32 del entero.
Lo que no entiendo muy bien, es exactamente lo que hace dentro del if, pero sé que al compilarlo, en la llamada al método printBitSet, muestra los bytes en forma binaria, y luego te dice las posiciones de los "1", eliminando los "0".
Por cosas así me planteo dejar la programación, ya que las matemáticas nunca se me han dado bien, y son muy importantes para sacar este tipo de cosas.
Un saludo.