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

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


C/Visual C

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

Versión 1
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 20 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
39.685 visualizaciones desde el 20 de Febrero del 2002. Una media de 56 por semana
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 (3)

asd
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
Endos
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

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s109