Per sicurezza vi posto il mio listato, ma sono più che sicuro che è corretto, dato che i bit che stampa a video sono gli stessi che ho trovato in diversi esempi:
codice:
#include <stdio.h>
void estrai_bit (long , char [32]);
void main() {
char i, bit[32];
union single_basic {
float f;
long l;
} a;
printf("PROGRAMMA PER L'ESTRAZIONE DEI BIT DA UN FLOAT");
printf("\n\nInserire il numero float: ");
scanf("%f",&a.f);
estrai_bit (a.l,bit);
printf("\nFloat = %e",a.f);
printf("\nLong Hex = %x",a.l);
printf("\nBit corrispondenti a segno, esponente e mantissa\n");
printf("%d ",bit[0]);
for (i = 1; i <= 8; i++) printf("%d",bit[i]);
printf (" %d",bit[9]);
for (i = 10; i <= 31; i++) printf("%d",bit[i]);
puts("\n");
}
void estrai_bit (long reg, char C[32]) {
short i;
for (i = 31; i >= 0; i--) {
C[i] = (char) (reg & 1);
reg = reg >> 1;
}
}