[C con Clase] Dudas con número binario.
Sebastián
toledanosebastian en gmail.com
Vie Jul 18 17:53:31 CEST 2014
Buenos días a todos.
Mis dudas son respecto a este programa:
código:
#include <stdio.h>
int main() {
int nbin=0, ndec, digito=0, i;
printf("INGRESE UN N° BINARIO\n");
printf("N° bin: ");
scanf("%d", &nbin);
i = 1;
ndec = 0;
while (nbin != 0){
digito = nbin % 10;
if (digito == 1 || digito == 0){
ndec = ndec + (digito * i);
nbin = nbin / 10;
i = i * 2;
}
else {
printf("EL NÚMERO NO ES BINARIO\n");
return 0;
}
}
printf("\nEL DECIMAL CORRESPONDIENTE ES:\n");
printf("N° dec: %d", ndec);
return 0;
}
El punto es que no consigo entender por qué el número centinela no puede
ser (-1) cuando es el que uso normalmente (¿será que éste caso es
anormal?). Fui probando números en el rango -2..2 y encontré que el
único que no interfiere con el funcionamiento de programa es el 0 (¿por
qué el 0?). La siguiente duda tiene que ver con la longitud máxima del
número binario, solo puede traducir el equivalente a 1023 que es
1111111111 (10 dig.) ¿Si quisiera traducir el equivalente a 2000?
El ejercicio es el N° 3.36 del manual Como Programar en c/c++ de Deitel
y Deitel.
Esto es todo, gracias de antemano!
Más información sobre la lista de distribución Cconclase