Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
showFloatBits - showFloatBits.c

showFloatBits.c

Caricato da:
Scarica il programma completo

  1. /**
  2.  * Autore: Guglielmo Fachini
  3.  * Data: 24 Novembre 2009
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <limits.h>
  9.  
  10. typedef
  11.   union {
  12.     float realNumber;
  13.     int intNumber;    /* Usato per accedere ai bit di realNumber */
  14.   } Float;
  15.  
  16. void showFloatBits(Float number);
  17.  
  18. int main(int argc, char **argv) {
  19.   Float n;
  20.  
  21.   if (argc != 2) {
  22.     printf("Usage: %s <floatNumber>\n", argv[0]);
  23.     return EXIT_FAILURE;
  24.   }
  25.  
  26.   n.realNumber = atof(argv[1]);
  27.   showFloatBits(n);
  28.  
  29.   return EXIT_SUCCESS;
  30. }
  31.  
  32. void showFloatBits(Float number)
  33. {
  34.   // Total Bits (32)
  35.   int bits = sizeof(float) * CHAR_BIT;
  36.   // Mask (10000000 00000000 00000000 00000000)
  37.   int mask = 1 << (bits - 1);
  38.   int i, var;
  39.  
  40.   var = number.intNumber;
  41.   for (i = 1; i <= bits; i++) {
  42.     putchar(var & mask ? '1' : '0');
  43.     var <<= 1;
  44.     if (i % 8 == 0)
  45.       putchar(' ');
  46.   }
  47.   putchar('\n');
  48. }