/**
* Autore: Guglielmo Fachini
* Data: 24 Novembre 2009
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
typedef
union {
float realNumber;
int intNumber; /* Usato per accedere ai bit di realNumber */
} Float;
void showFloatBits(Float number);
int main(int argc, char **argv) {
Float n;
if (argc != 2) {
printf("Usage: %s <floatNumber>\n", argv
[0
]);
return EXIT_FAILURE;
}
n.realNumber = atof(argv[1]);
showFloatBits(n);
return EXIT_SUCCESS;
}
void showFloatBits(Float number)
{
// Total Bits (32)
int bits = sizeof(float) * CHAR_BIT;
// Mask (10000000 00000000 00000000 00000000)
int mask = 1 << (bits - 1);
int i, var;
var = number.intNumber;
for (i = 1; i <= bits; i++) {
putchar(var & mask ? '1' : '0');
var <<= 1;
if (i % 8 == 0)
putchar(' ');
}
putchar('\n');
}