/* Pasar de binario a decimal */
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
char binario[8]={'0','0','0','0','0','0','0','0'};
int numbinario[8];
int decimal=0;
int a;
int b=-1;
clrscr();
printf("Teclea el numero binario de 8 bits : ");
scanf("%8s",binario);
for(a=7;a>=0;a=a-1)
{
b++;
switch(binario[b])
{
case '0':
numbinario[a]=0;
break;
case '1':
numbinario[a]=1;
break;
default:
printf("Los caracteres introducidos no son correctos");
}
decimal=numbinario[a]*pow(2,a)+decimal;
}
printf("\nEl numero en decimal es %i",decimal);
getch();
}
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;
}