devil_prince
07-06-2011, 16:51
Ragazzi come da titolo devo fare questo esercizio per visualizzare la rappresentazione binaria di un float con segno esponente e mantissa.
Il programma mi funziona bene, vi posto il codice:
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <math.h>
void estrae_bit(long, char [32]);
void main()
{
char i, bit[32];
union basic_single {
float fa;
long la;} a;
printf("Inserire il float: "); scanf("%f",&a.fa);
estrae_bit(a.la, bit);
printf("\tfloat= %e\n", a.fa);
printf("\tlong hex = %08x\n",a.la);
printf("bit corrispondenti\tsegno esponente mantissa");
printf("\t\t\n %1d ",bit[0]);
for(i=1;i<=8;i++) printf("%1d",bit[i]);
printf(" ");
for(i=9;i<31;i++)
printf("%1d",bit[i]);
puts("\n");
}
/*verificare numero dei bit coincida con i dati iniziali*/
void estrae_bit(long reg, char B[32])
{
short i;
for (i=31;i>=0;i--)
{
B[i]=(char)(1 & reg);
reg=reg>>1;
}
}
il problema è che l'es mi chiede di confrontare i bit ottenuti con il numero per vedere che tutto sia andato per il verso giusto...come faccio?
Grazie in anticipo per le risp
Il programma mi funziona bene, vi posto il codice:
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <math.h>
void estrae_bit(long, char [32]);
void main()
{
char i, bit[32];
union basic_single {
float fa;
long la;} a;
printf("Inserire il float: "); scanf("%f",&a.fa);
estrae_bit(a.la, bit);
printf("\tfloat= %e\n", a.fa);
printf("\tlong hex = %08x\n",a.la);
printf("bit corrispondenti\tsegno esponente mantissa");
printf("\t\t\n %1d ",bit[0]);
for(i=1;i<=8;i++) printf("%1d",bit[i]);
printf(" ");
for(i=9;i<31;i++)
printf("%1d",bit[i]);
puts("\n");
}
/*verificare numero dei bit coincida con i dati iniziali*/
void estrae_bit(long reg, char B[32])
{
short i;
for (i=31;i>=0;i--)
{
B[i]=(char)(1 & reg);
reg=reg>>1;
}
}
il problema è che l'es mi chiede di confrontare i bit ottenuti con il numero per vedere che tutto sia andato per il verso giusto...come faccio?
Grazie in anticipo per le risp