Foro de elhacker.net

Programación => Java => Mensaje iniciado por: d!lan en 22 Septiembre 2013, 06:59 am



Título: Llenar vector de boolean (Java)
Publicado por: d!lan en 22 Septiembre 2013, 06:59 am
Buenas
resulta que tengo un problemilla resulta que tengo que pasar un numero decimal a binario y luego  con el numero binario llenar un vector booleano en el cual si digamos el numero binario ocupa 8bits pero solo llega a 7 bits el espacio que hace falta para completar los 8 bits se pone como false por ejemplo el numero 127 es de 7 digitos (1111111) el vector quedaria f=false & t=true para el ejemplo xD [f][t][t][t][t][t][t][t] los mismo que si tuviera el numero 256 (100000000) serian 9 bits pero tendria que completar los otros 7 bits con false hacia la izquiera pero resulta que yo tomo el decimal

ejemplo

Código:
String numero="256";
        int dato=Integer.parseInt(numero);
        String con="";
        
        while(dato>0){
            int residuo=dato%2;
            con=residuo+con;
            dato/=2;
        
        }

pero  nose como cargar el vector de boolean y pues tengo tambien que valir de que si es de nueve bits entonces crear el vector de 16 o segun sea el caso pero nose ni como cargar el vector
la verdad nunca habia hecho un ejercicio de este tipo O.o
espero me puedan ayudar
gracias


Título: Re: Llenar vector de boolean (Java)
Publicado por: chrs1214 en 22 Septiembre 2013, 16:46 pm
Divide tareas y te haces menos lio

por ej
Primero invocar
pasarABinario(numero) => Entregaria un resultado binario 1111 por ej
despues invocar
completarBinario(numeroBinario) => Completaria el binario como lo necesitas 11111111 (Asi controlas mas facil los problemas que se te pueden dar aca)//Acca harias las validaciones de longitud que dices

y pues una vez que la tienes eso pues lo que preguntas harias un metodo digamos, convertir a lista como este.
String strCadenaBinaria= numeroBinario+"";

List lstResult= new ArrayList();
for(int i = 0; i <strCadenaBinaria.length; i++){
        if("1".equals(strCadenaBinaria.charat(i))){
                   lstResult.add(true);
         }else{
                   lstResult.add(false);
         }
}


Título: Re: Llenar vector de boolean (Java)
Publicado por: d!lan en 22 Septiembre 2013, 20:50 pm
disculpe la molestia pero como corro los ceros que me hacen falta para completar la los bits correspondientes :S ya que no encuentro la forma de llenar de ceros el resto :s
y pues buscando un poco en google encontre este metodo que hace la conversion pero siempre genera 32 bits
:s
Código:
  
    public static String convertir(int entero) {
        //La máscara y el # de iteraciones
         int mascara = 0x80000000;
         int iteraciones = 32;
        //el contador y el resultado
        int contador = 0;
        StringBuilder resultado = new StringBuilder(iteraciones);

        //Se recorren los 32 bit
        while (contador++ < iteraciones) {
            /*Si el entero and la mascara = 0 quiere decir
             *que el bit 1 esta apagado*/
            if ((entero & mascara) == 0) {
                resultado.append('0');
            } else {
                resultado.append('1');
            }
           /*correr un bit a la izquierda para poner
             *el siguiente bit en la posicion del primero*/
            entero = entero << 1;
        }
        return resultado.toString();
    }