Código de C/Visual C - Conversión de un número binario a decimal en C

sin imagen de perfil

Conversión de un número binario a decimal en Cgráfica de visualizaciones


C/Visual C

estrellaestrellaestrellaestrellaestrella(6)
Publicado el 20 de Febrero del 2002 por Lucía Acuña Rey
62.891 visualizaciones desde el 20 de Febrero del 2002
Programa que entrando una cifra en binario, te la convierte a decimal.

Versión 1
estrellaestrellaestrellaestrellaestrella(6)

Publicado el 20 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
62.894 visualizaciones desde el 20 de Febrero del 2002
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* 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)

23 de Febrero del 2002
estrellaestrellaestrellaestrellaestrella
Pude mejorarse en algunos aspectos:
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++
Responder
14 de Abril del 2002
estrellaestrellaestrellaestrellaestrella
Está bien pero puede hacerse mucho más corto y rápido:

// 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
Responder
angel lopez
10 de Febrero del 2016
estrellaestrellaestrellaestrellaestrella
me gustaria si no es molestia saber si ese codigo, emplea los ceros que le falta.
un ejemplo 5 es: 101
pero su codigo en 8 bits seria:00000101
como hago para que le salgan los ceros restantes
Responder
Nico
28 de Marzo del 2017
estrellaestrellaestrellaestrellaestrella
Yo hice este en C, con Dev-C++

#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);
}
Responder
Miguel
14 de Junio del 2017
estrellaestrellaestrellaestrellaestrella
#include <stdio.h>
#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;
}
Responder
Erick Miguel
9 de Septiembre del 2017
estrellaestrellaestrellaestrellaestrella
EL CÓDIGO SE PUEDE MEJORAR SIN NECESIDAD DE CADENA DE CARACTERES:

#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;
}
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s109