[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