#include /* Binarni prikaz realnog broja tipa double u racunalu. */ typedef union { double d; /* 8 byteova = 64 bita. */ int i[2]; /* 2 rijeci od po 4 bytea. */ } Double_bits; void prikaz_int(int broj) { int nbits, bit, i; unsigned mask; /* Broj bitova u tipu int. */ nbits = 8 * sizeof(int); /* Pocetna maska ima bit 1 na najznacajnijem mjestu. */ mask = 0x1 << nbits - 1; for (i = 1; i <= nbits; ++i) { /* Maskiranje odgovarajuceg bita. */ bit = broj & mask ? 1 : 0; /* Ispis i blank nakon svaka 4 bita, osim zadnjeg. */ printf("%d", bit); if (i % 4 == 0 && i < nbits) printf(" "); /* Pomak maske za 1 bit udesno. */ mask >>= 1; } printf("\n"); return; } void prikaz_double(double d) { Double_bits u; u.d = d; printf(" 1. rijec: "); prikaz_int( u.i[0] ); printf(" 2. rijec: "); prikaz_int( u.i[1] ); return; } int main(void) { double d; printf(" Upisi realni broj: "); scanf("%lf", &d); printf(" Prikaz broja %10.3f u racunalu:\n", d); prikaz_double(d); return 0; }