
Conversión de un número binario a decimal en C
C/Visual C
Publicado el 20 de Febrero del 2002 por Lucía Acuña Rey (5 códigos)
81.532 visualizaciones desde el 20 de Febrero del 2002
Programa que entrando una cifra en binario, te la convierte a decimal.
Comentarios sobre la versión: Versión 1 (6)
No es nedcesario inicializar a cero el array de caracteres. Basta con declararla con modo de almacenamiento static.
En VC++ los acumuladores e ponen siempre como
suma += ....
Sin duda programas en C, no en C++
// Se supone que tanto Bin , como BitNum contienen valores correctos (BitNum MAX=32, MIN=1)
unsigned BinADec(char *Bin, int BitNum)
{
unsigned long Numero=0;
while(BitNum--)
{
Numero<<=1;
Numero|=*(Bin++)-'0';
}
return Numero;
}
Saludos
un ejemplo 5 es: 101
pero su codigo en 8 bits seria:00000101
como hago para que le salgan los ceros restantes
#include <stdio.h>
#include<math.h>
main () {
int binario, aux, aux2, potencia, decimal=0,resto,cuentadigitos=0,i=0;
printf ("Ingrese el numero en binario [Sin Decimales]: ");
scanf ("%d", &binario);
aux=binario;
aux2=binario;
while (aux) {
cuentadigitos++;
aux/=10;}
for (i=0;i<cuentadigitos;i++) {
resto=binario%10;
binario/=10;
decimal=decimal+resto*pow(2,i);}
printf ("\nEl numero %d(2) es %d(10)",aux2,decimal);
}
#include <stdlib.h>
#include <math.h>
int main()
{ int i,j,nbinario[20],numbinario[20];
int decimal=0;
char binario[20];
printf("Introduzca un numero binario: ");scanf("%s",binario);
//paso el string a vector de enteros
for (i=0 ; binario[i]!='\0' ; i++){
switch(binario[i]){
case '0': nbinario[i]=0; break;
case '1': nbinario[i]=1; break;
}
}
i--;
//invierto el vector
for (j=0 ; i>=0 ; j++,i--)
numbinario[j]=nbinario[i];
//paso de binario a decimal
for(i=0 ; binario[i]!='\0' ; i++)
decimal+=numbinario[i]*pow(2,i);
printf("\nEl numero en decimal es: %d",decimal);
return 0;
}
#include<stdio.h>
#include<math.h>
int main(){
int n,i,residuo,decimal,div=0;
printf("Ingresa un numero binario:");
scanf("%d",&n);
i=0,decimal=0;
while(n!=0){
residuo=n%10;
n=n/10;
//printf("\nN vale:%d",n);
//printf("\nResiduo es:%d",residuo);
//printf("\nValor i:%d",i);
decimal=decimal+residuo*(pow(2,i));
//printf("\nDecimal:%d\n",decimal);
i++;
}
printf("Decimal:%d",decimal);
return 0;
}