Quote Originally Posted by ZTik View Post
The problem to solve was to avoid using Math header, library function and the shift-mask operators.
In that case the only option was to use the division and the remainder % operators.
Or just use addition...

Code:
#include <stdio.h>
int main(int argc, char *argv[]) {
   float f;
   int x;
   int e = 0;


   if(sizeof(int) != 4 || sizeof(float) != 4) {
     printf("Ints are of wrong size\n");
     return 0;
   }


   printf("Enter value: ");
   scanf("%f",&f);
   printf("Value is %f\n",f);
   x = *((int *)&f);


   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);
   x += x; e = (x < 0 ? e*2+1 : e*2);


   e -= 127;  // Remove exponent bias
   printf("e is %i\n",e);
}