Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sherboc en 21 Junio 2016, 04:13 am



Título: ¿Cómo separar un numero binario en digitos?
Publicado por: Sherboc en 21 Junio 2016, 04:13 am
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.


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: AlbertoBSD en 21 Junio 2016, 04:19 am
Dejare esto por aqui:

dQfP6urxOY0

Saludos


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: Sherboc en 21 Junio 2016, 04:35 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  :-\.


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: 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:

Código
  1. char *binario(unsigned int n){
  2.  static char b[33];
  3.  int i =0, temp;
  4.  whilen( n > 0){
  5.   temp = n %2;
  6.   if(temp==1){
  7.     b[i] = '1';
  8.   }
  9.   else{
  10.     b[i] = '0';
  11.   }
  12.   n = (int) n/2;
  13.   i++;
  14.  }
  15.  b[i] = '\0';
  16.  return b;
  17. }

Saludos.


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: Sherboc en 21 Junio 2016, 22:19 pm
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:

Código
  1. char *binario(unsigned int n){
  2.  static char b[33];
  3.  int i =0, temp;
  4.  whilen( n > 0){
  5.   temp = n %2;
  6.   if(temp==1){
  7.     b[i] = '1';
  8.   }
  9.   else{
  10.     b[i] = '0';
  11.   }
  12.   n = (int) n/2;
  13.   i++;
  14.  }
  15.  b[i] = '\0';
  16.  return b;
  17. }

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!.


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: AlbertoBSD en 21 Junio 2016, 22:28 pm
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:

Código
  1. void binario(unsigned int n){
  2.  int i =0, temp;
  3.  whilen( n > 0){
  4.   temp = n %2;
  5.   if(temp==1){
  6.    //hacer algo si es uno
  7.   }
  8.   else{
  9.     //hacer algo si es cero
  10.   }
  11.   n = (int) n/2;
  12.   i++;
  13.  }
  14. }

Saludos


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: Sherboc en 22 Junio 2016, 22:08 pm
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.


Título: Re: ¿Cómo separar un numero binario en digitos?
Publicado por: AlbertoBSD en 24 Junio 2016, 02:30 am
Tu quieres entonces el proceso para pasar de Cadena Binaria a Entero?

Dejo aqui el codigo y un video adiconal:

a3t3oEO8DuI

Código
  1. /*
  2. Pasar una secuencia binaria (En forma de Cadena) a valor entero.
  3. - Potencias de 2
  4. - Retornar el valor entero
  5.  
  6. Twitter @albertoBSD
  7.  
  8. */
  9.  
  10. #include<stdio.h>
  11.  
  12. unsigned int binario_entero(char *binario);
  13.  
  14. int main() {
  15. printf("%i\n",binario_entero("0"));
  16. printf("%i\n",binario_entero("1"));
  17. printf("%i\n",binario_entero("11111111"));
  18. return 0;
  19. }
  20.  
  21. unsigned int binario_entero(char *binario) {
  22. unsigned int r = 0;
  23. int base2 = 1;
  24. int i = 0;
  25. while(binario[i] != '\0' && i < 32) {
  26. if(binario[i] == '1') {
  27. r =  r + base2;
  28. }
  29. base2 = base2 * 2;
  30. i++;
  31. }
  32. return r;
  33. }
  34.