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

Versión 1
estrellaestrellaestrellaestrellaestrella(6)

Publicado el 20 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
81.066 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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s109