Advertisement
Disfavour

Loos at this useless thing

Sep 21st, 2019
1,213
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <inttypes.h>
  3.  
  4. enum
  5. {
  6.         bias = 1023, mantissa = 52, poryadok = 11,bitznaka0=0, bitznaka1 = 1, bitsmeschenia = 1
  7. };
  8.  
  9. void f (double a)
  10. {
  11.         uint64_t *p1,b=0,q,l,k,j,g=1;
  12.         double h;
  13.         int i=1;
  14.         void *p2;
  15.         p2 = (& a);
  16.         p1 = (uint64_t*) p2;
  17.         q = ~ (( ~ b) >> 1);
  18.         for ( ; q != 0 ; q = q >> 1 , i++)
  19.         {
  20.                 if ( (q & *p1) == 0 )
  21.                         putchar ('0');
  22.                 else
  23.                         putchar ('1');
  24.  
  25.                 if ((i == bitznaka1) || (i == (bitznaka1 + poryadok)))
  26.                         putchar (' ');
  27.         }
  28.         putchar ('\n');
  29.  
  30.         l = (*p1 >> (poryadok + mantissa));
  31.         printf ("bit znaka = %ld\n", l);
  32.  
  33.         k = (*p1 << bitznaka1);
  34.         k = (k >> (mantissa + bitznaka1));
  35.         printf ("poryadok = %ld\n", k);
  36.  
  37.         j = (*p1 << (poryadok + bitznaka1));
  38.         j = (j >> (bitznaka1 + poryadok));
  39.         printf ("mantissa = %ld\n", j);
  40.  
  41.         h = 1.0 + (((double) j) / (1L << mantissa));
  42.         printf ("Predstavlenie chisla -1^(%ld) * 2^(%ld - %i) * %lf\n", l, k, bias, h);
  43.  
  44.         /* Начало бесполезной проверки*/
  45.         if (k == ((1L << poryadok) - 1))
  46.         {
  47.                 if (j == 0)
  48.                 {
  49.                         if (l == bitznaka1)
  50.                                 printf("-infinity\n");
  51.                         if (l == bitznaka0)
  52.                                 printf("+infinity\n");
  53.                 }
  54.                 if (j == (g << (mantissa - 1)))
  55.                         printf("NAN\n");
  56.         }
  57.         /*Конец бесполезной проверки*/
  58. }
  59.  
  60. int main()
  61. {
  62.         double a,b;
  63.         printf ("Vashe chislo budet =a/b\nVvedite 2 chisla 4erez enter\n");
  64.         scanf ("%lf%lf", &a,&b);
  65.         a = a / b;
  66.         printf ("vashe chislo = %lf\n",a);
  67.         f(a);
  68.         return 0;
  69. }
Advertisement
RAW Paste Data Copied
Advertisement