Czesc wpadlem na pomysl napisania programu ktory zapisze liczbe ulamkowa dziesietnie na binarnie. Np z dokladnoscia + - 30 po przecinku. Jak na razie idzie dobrze bo udalo mi sie zrobic to dla tablicy charow ale chcialbym z niej skorzystac i zrobic to po 'ludzku'. Oto kod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float base2(float liczba)
{
int i,liczba_dziesietna_=0,licznik=0;
char tab[31];
tab[0]='0';
tab[1]='.';
for(i=2;i<31;i++)
{
liczba*=2;
if(liczba>=1.0)
{
tab[i]='1';
liczba--;
}
else
tab[i]='0';
}
printf("%s\n",tab);
for(i=2;i<31;i++)
{
licznik--; //do potegi -
if(tab[i]='1')
liczba_dziesietna_=pow(2.0,licznik);
}
return liczba_dziesietna_;
}
int main()
{
float liczba=0.1;
int calk=(int)liczba;
float mant=liczba-calk;
float liczba2=base2(liczba);
printf("%.30f",liczba2);
return 0;
}
Podejrzewam ze wszystko jest dobrze ale wydaje sie ze mam blad w tej linijce:
liczba_dziesietna_=pow(2.0,licznik);
i cholera nie wiem co jest zle. Moze bo dlatego bo juz jest pozno. Jesli wiecie to zrobilem zle to dajcie znac. dzieki wielkie