Napisati C program koji s tipkovnice učitava realni broj. Potrebno je izračunati i na ekran ispisati binarni zapis tog realnog broja u 32-bitnom registru.
Code:
#include<stdio.h>
int main(){
char binbroj[32];
int predznak = 1;
int pot=0;
float realniBroj,frac;
int E;
printf("Unesi realni broj");
scanf("%f",&realniBroj);
if (realniBroj < 0)
{
predznak = -1;
frac = realniBroj * predznak;
binbroj[0] ='1';
}
if (frac < 1 )
{
while (frac < 1)
{
frac *= 2.0;
pot--;
}
}
else {
while (frac > 2)
{
frac /= 2.0;
pot++;
}
}
E = pot * 127 ;
for (int i=0;i>=1;i--)
{
if (E % 2 == 0)
binbroj[i] = '0';
else
binbroj[i] ='1';
E /= 2;
}
frac -= 1;
for (i=9;i<=31;i++){
frac *= 2.0;
if (frac >=1) {
binbroj[i] = '1';
frac -= 1.0;
} else binbroj[i] ='0';
}
printf("realni binarni broj %f u registru ima binarni zapis \n",realniBroj);
for(i=0;i<32;i++)
{
if(i==1) printf (" ");
if(i==9) printf (" ");
printf("%c",binbroj[i]);
}
}
#include<stdio.h>
int main(){
char binbroj[32];
int predznak = 1;
int pot=0;
float realniBroj,frac;
int E;
printf("Unesi realni broj");
scanf("%f",&realniBroj);
if (realniBroj < 0)
{
predznak = -1;
frac = realniBroj * predznak;
binbroj[0] ='1';
}
if (frac < 1 )
{
while (frac < 1)
{
frac *= 2.0;
pot--;
}
}
else {
while (frac > 2)
{
frac /= 2.0;
pot++;
}
}
E = pot * 127 ;
for (int i=0;i>=1;i--)
{
if (E % 2 == 0)
binbroj[i] = '0';
else
binbroj[i] ='1';
E /= 2;
}
frac -= 1;
for (i=9;i<=31;i++){
frac *= 2.0;
if (frac >=1) {
binbroj[i] = '1';
frac -= 1.0;
} else binbroj[i] ='0';
}
printf("realni binarni broj %f u registru ima binarni zapis \n",realniBroj);
for(i=0;i<32;i++)
{
if(i==1) printf (" ");
if(i==9) printf (" ");
printf("%c",binbroj[i]);
}
}
jos jedna stvar , complier mi javlja warning :warning C4508: 'main' : function should return a value; 'void' return type assumed, ne znam zasto.
Ako je moguce da me neki postavi kometare kod if statementa jel nekontam kako to radi . Hvala
[Ovu poruku je menjao X Files dana 21.03.2009. u 22:01 GMT+1]