Tengo que hacer un programa para pasar un float a binario, con el formato coma flotante. De momento llevo este codigo para pasarlo primero a binario, me sale bien la parte entera, pero no entiendo el problema que hay al intentar meter la decimal:
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
void vuelta( char* volteador, char* definitivo){
char aux;
while(volteador>definitivo)
aux=*volteador, *volteador--=*definitivo, *definitivo++=aux;
}
void dconversor(float num,char* dbin){
static char n[]="01,";
float decimales=num;
do{
decimales=decimales*2;
if(decimales<1.0){
*dbin++=n[0];
}
if (decimales>=1.0){
*dbin++=n[1];
decimales =decimales-1;
}
}while(decimales!=0);
}
char* conversor(float num, char* bin){
static char n[]="01";
int pEntera;
float pDecimal;
pEntera =(int)num;//casting a entero
pDecimal=num-pEntera;
char* aux=bin;
div_t rest;
int base=2;
int i =0;
int close =1;
int contador=0;
char* str;
int z;
// pasa a base 2 , pero al reves
do{
rest=div(pEntera,base);
*aux++= n[rest.rem];
}
while(pEntera=rest.quot);
//le da la vuelta
vuelta(aux-1,bin);
dconversor(pDecimal,bin-1);
return bin;
}
int main()
{
char base2[32];
float num;
char dbase2[32];
scanf("%f",&num);
printf("el resultado en base 2 es: %s,",conversor(num,base2));
return 0;
}
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
void vuelta( char* volteador, char* definitivo){
char aux;
while(volteador>definitivo)
aux=*volteador, *volteador--=*definitivo, *definitivo++=aux;
}
void dconversor(float num,char* dbin){
static char n[]="01,";
float decimales=num;
do{
decimales=decimales*2;
if(decimales<1.0){
*dbin++=n[0];
}
if (decimales>=1.0){
*dbin++=n[1];
decimales =decimales-1;
}
}while(decimales!=0);
}
char* conversor(float num, char* bin){
static char n[]="01";
int pEntera;
float pDecimal;
pEntera =(int)num;//casting a entero
pDecimal=num-pEntera;
char* aux=bin;
div_t rest;
int base=2;
int i =0;
int close =1;
int contador=0;
char* str;
int z;
// pasa a base 2 , pero al reves
do{
rest=div(pEntera,base);
*aux++= n[rest.rem];
}
while(pEntera=rest.quot);
//le da la vuelta
vuelta(aux-1,bin);
dconversor(pDecimal,bin-1);
return bin;
}
int main()
{
char base2[32];
float num;
char dbase2[32];
scanf("%f",&num);
printf("el resultado en base 2 es: %s,",conversor(num,base2));
return 0;
}