¿Cómo separar un numero binario en digitos?

Iniciado por Sherboc, 21 Junio 2016, 04:13 AM

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

Sherboc

Hola a todos,  eh estado investigándolo pero no averiguo como puedo separar un numero binario en sus dígitos, tengo entendido que debo de usar los operadores de división y de módulo pero no se como...Lo necesito saber para que pueda terminar un programa en C para convertir un num binario a decimal, y por eso quiero que me digan desde sus conocimientos como podría separar el numero.

De ante mano, gracias por la atención.

AlbertoBSD

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Sherboc

#2
Cita de: AlbertoBSD en 21 Junio 2016, 04:19 AM
Dejare esto por aqui:


Saludos

Gracias pero no es como necesito el programa  :xD, lo debo de hacer con los operadores de división y modulo ya que la programación del video es más avanzada  :-\.

AlbertoBSD

Es casi lo mismo solo se sustitullenas operaciones.

El recorrimiento de bits es la division entre 2 y el & e el modulo.

Aqui esta el codigo:

char *binario(unsigned int n){
  static char b[33];
  int i =0, temp;
  whilen( n > 0){
   temp = n %2;
   if(temp==1){
     b[i] = '1';
   }
   else{
     b[i] = '0';
   }
   n = (int) n/2;
   i++;
  }
  b[i] = '\0';
  return b;
}


Saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Sherboc

Cita de: AlbertoBSD en 21 Junio 2016, 05:33 AM
Es casi lo mismo solo se sustitullenas operaciones.

El recorrimiento de bits es la division entre 2 y el & e el modulo.

Aqui esta el codigo:

char *binario(unsigned int n){
 static char b[33];
 int i =0, temp;
 whilen( n > 0){
  temp = n %2;
  if(temp==1){
    b[i] = '1';
  }
  else{
    b[i] = '0';
  }
  n = (int) n/2;
  i++;
 }
 b[i] = '\0';
 return b;
}


Saludos.

Ya le entendí a tu código bro jaja, nada mas que lo que yo ando buscando es hacer lo de la separación y lo de cambios de bits sin usar "arreglos o matrices" . Solo con while, if, else y operadores de división. Pero pues me pondré a investigar más para no molestar preguntando tanta cosa.

Un saludo!.

AlbertoBSD

No te preocupes por preguntar lo de la matris es solo por si quieres guardar el valor.

Si lo que quieres es realizar cierta acción cuando se uno o cero entonces:

void binario(unsigned int n){
  int i =0, temp;
  whilen( n > 0){
   temp = n %2;
   if(temp==1){
    //hacer algo si es uno
   }
   else{
     //hacer algo si es cero
   }
   n = (int) n/2;
   i++;
  }
}


Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Sherboc

Ok gracias, de echo lo que yo estoy haciendo es un programa para convertir un binario a decimal pero tengo que saber separar en dígitos el numero binario, intentaré aplicar cosas de tu código y haber si queda  ::).

Un saludo.

AlbertoBSD

Tu quieres entonces el proceso para pasar de Cadena Binaria a Entero?

Dejo aqui el codigo y un video adiconal:

[youtube=640,360]https://www.youtube.com/watch?v=a3t3oEO8DuI[/youtube]


/*
Pasar una secuencia binaria (En forma de Cadena) a valor entero.
- Potencias de 2
- Retornar el valor entero

Twitter @albertoBSD

*/

#include<stdio.h>

unsigned int binario_entero(char *binario);

int main() {
printf("%i\n",binario_entero("0"));
printf("%i\n",binario_entero("1"));
printf("%i\n",binario_entero("11111111"));
return 0;
}

unsigned int binario_entero(char *binario) {
unsigned int r = 0;
int base2 = 1;
int i = 0;
while(binario[i] != '\0' && i < 32) {
if(binario[i] == '1') {
r =  r + base2;
}
base2 = base2 * 2;
i++;
}
return r;
}


Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW