Llenar vector de boolean (Java)

Iniciado por d!lan, 22 Septiembre 2013, 06:59 AM

0 Miembros y 1 Visitante están viendo este tema.

d!lan

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

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

chrs1214

#1
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);
         }
}

d!lan

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
 
    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();
    }