Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <inttypes.h>
- enum
- {
- bias = 1023, mantissa = 52, poryadok = 11,bitznaka0=0, bitznaka1 = 1, bitsmeschenia = 1
- };
- void f (double a)
- {
- uint64_t *p1,b=0,q,l,k,j,g=1;
- double h;
- int i=1;
- void *p2;
- p2 = (& a);
- p1 = (uint64_t*) p2;
- q = ~ (( ~ b) >> 1);
- for ( ; q != 0 ; q = q >> 1 , i++)
- {
- if ( (q & *p1) == 0 )
- putchar ('0');
- else
- putchar ('1');
- if ((i == bitznaka1) || (i == (bitznaka1 + poryadok)))
- putchar (' ');
- }
- putchar ('\n');
- l = (*p1 >> (poryadok + mantissa));
- printf ("bit znaka = %ld\n", l);
- k = (*p1 << bitznaka1);
- k = (k >> (mantissa + bitznaka1));
- printf ("poryadok = %ld\n", k);
- j = (*p1 << (poryadok + bitznaka1));
- j = (j >> (bitznaka1 + poryadok));
- printf ("mantissa = %ld\n", j);
- h = 1.0 + (((double) j) / (1L << mantissa));
- printf ("Predstavlenie chisla -1^(%ld) * 2^(%ld - %i) * %lf\n", l, k, bias, h);
- /* Начало бесполезной проверки*/
- if (k == ((1L << poryadok) - 1))
- {
- if (j == 0)
- {
- if (l == bitznaka1)
- printf("-infinity\n");
- if (l == bitznaka0)
- printf("+infinity\n");
- }
- if (j == (g << (mantissa - 1)))
- printf("NAN\n");
- }
- /*Конец бесполезной проверки*/
- }
- int main()
- {
- double a,b;
- printf ("Vashe chislo budet =a/b\nVvedite 2 chisla 4erez enter\n");
- scanf ("%lf%lf", &a,&b);
- a = a / b;
- printf ("vashe chislo = %lf\n",a);
- f(a);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement