#include <iostream>
#include <cstdlib>
#include <cmath>
#include <string>

using namespace std;

// esta funcion escribe los n bits de un byte.
string bits(int n, unsigned char b)
{
   return n==0 ? "" : bits(n-1,b/2) + (b&1? '1': '0');
}


void binary(float x)
{
    unsigned char* p= (unsigned char*) &x;
    cout << bits(8,p[3]) << ' ' << bits(8,p[2]) << ' ' 
         << bits(8,p[1]) << ' ' << bits(8,p[0]) << " = " << x << endl;
}


int main(int nargs, char* args[])
{
   float eps=1.0f;
   while (1.0f+eps > 1.0f)
      eps= eps/2.0f;
   cout << "epsilon= " << eps << endl;
   cout << "sizeof(float)= " << sizeof(float) << endl;

   binary(23.0f);
   binary(0.03125f);
   binary(0.0625f);
   binary(0.125f);
   binary(0.25f);
   binary(0.5f);
   binary(1.0f); 
   binary(2.0f); 
   binary(4.0f); 
   binary(8.0f); 
   binary(16.0f); 
   binary(32.0f); 

   binary(1.0f);
   binary(2.0f);
   binary(3.0f);
   binary(4.0f);
   binary(5.0f);
   binary(6.0f);
   binary(7.0f);
   binary(0.1f);
   binary(-1.0f); 
   binary(-2.0f); 
   binary(-4.0f); 
   return EXIT_SUCCESS;
}

