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.
Dejare esto por aqui:
[youtube=640,360]https://www.youtube.com/watch?v=dQfP6urxOY0[/youtube]
Saludos
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 :-\.
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.
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!.
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
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.
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;
}