So people here know how I can convert 1.01010101 for base 10 in case it is in base 2 "binary" the answer is this in base10 1.3320312510 . I need the logic to handle this case ..
att
#include<stdio.h>
#include<stdlib.h>
int c[18],bcd[20];
//Função de conversão de decimal para binário
void conv_d2b ( unsigned long x,int *c)
{
int i;
for(i=0; i<18; i++)
*(c++)=(x>>i)&0x1;
}
int main()
{
int escolha;
double bina ,deci ;
int k;
unsigned long int j,x;
int pos, decimal=0;
char numb[17];
int cont=0;
printf("Conversor de numeros binarios e decimais \n\n");
printf(" ----------Menu----------\n 1 - Binario para decimal\n 2 - Decimal para binario\n 3 - Decimal fracionario para binario\n 4 - Binario'flutuante' fracionario para Decimal\n 5 - Exit\n\n Opcao: ");
scanf("%d", &escolha);
switch(escolha)
{
case 1:
//Conversão de BInarios para Decimal
printf("Digite um numero Binario qualquer");
scanf("%s",numb);
//Processamento da informação
for (pos=strlen(numb) -1; pos >=0; pos--)
decimal=decimal + (numb[cont++] - '0')*pow(2,pos);
//Exibindo a informação
printf("Seu numero Binario em Decimal eh: %d\n\n", decimal);
break;
case 2:
printf("Digite o numero que deseja converter :");
scanf("%lu",&x);
printf("\n\n \t Decimal\t Binario\n");
printf(" ---- %lu\t ", x);
conv_d2b(x,c);
for(k=17; k>=0; k--)
printf("%d",c[k]);
printf("\n\n\r");
break;
case 3:
break;
case 4:
break;
case 5:
exit(0);
break;
default:
printf("Opcao invalida");
break;
}
return 0;
}
I did something like this
int main()
{
int inteiro, binarioInt = 0, i = 1;
float binarioFrac = 0, k =0.1f, frac, temp1, binarioTotal, f;
printf("***** Converter valor FLOAT para BINARIO *******\n");
printf("***** POR FAVOR UTILIZE PONTO PARA SEPARAR OS NUMEROS *******\n");
printf("\nEnter com o valor : ");
scanf("%f",&f);
//Separando parte inteira
inteiro = (int)f;
//Separanto parte fracionada
frac = f - (int)f;
//Loop para converter decimal parte inteira em binario
while(inteiro>0)
{
binarioInt = binarioInt + inteiro % 2 * i;
i = i * 10;
inteiro = inteiro / 2;
}
//Loop para converter fracao em binario
while(k>0.00000001)
{
temp1 = frac *2;
binarioFrac = binarioFrac+((int)temp1)*k;
frac = temp1 - (int)temp1;
k = k / 10;
}
//
binarioTotal = binarioInt +binarioFrac;
printf(" \nbinary equivalent = %lf\n\n\n\n\n", binarioTotal);
}