AngoLinux

Convertsione di un numero float in uno in virgola fissa a 8 bit con parte intera a 5 (verifica di laboratorio)

- A cura del Prof. Stefano Salvi -


Proseguiamo con gli esercizi sui cambiamenti di base. Finalmente i ragazzi hanno imparato ad usare i parametri, quindi questo esercizio li richiede.

Il testo dell'esercizio è il seguente:

Scrivere un programma C che:
  • Converta un numero float in un numero in virgola mobile ad 8 bit, di cui 5 di parte intera. Il numero binario in virgola mobile andrà immagazzinato in un array di interi, un bit per ogni intero. (usare una funzione con parametri il float ed il vettore)
  • Stampi il numero binario ottenuto. (usare una funzione con parametro il vettore)
Utilizzare delle funzioni con i parametri per i vari compiti, come indicato.

Una possibile soluzione è la seguente:
// Pinco - Tizio - 3AIN
// Correzione dell'esercizio 5 della verifica di laboratorio

#include <stdio.h>

#define	DIM	8	/* Dimensione totale del numero */
#define BASE	2	/* Base del numero convertito (binario) */

void nToB5fix(float f,int n5[]);	// Converte il float in un numero in virgola fissa
void visb5(int n5[]);			// Visualizza il numero in virgola fissa

main()
{
float numero;		// Numero da convertire
int n5[8];		// Array nel quale lasciare il risultato
  numero=12.78;		// Valore del numero (fisso)
  nToB5fix(numero,n5);	// Converte il numero
  visb5(n5);		// Stampa il risultato
}

/* Converte un numero float in uno in virgola fissa a 8 bit con parte intera a 5
 *
 * I bit del numero convertito saranno lasciati in un array di interi, un bit
 * per elemento, nel primo il bit piu' significativo, nell'ultimo il meno
 */
void nToB5fix(float f,int n5[])
{
int i;			// Contatore
int n = f * 8.0;	// Numero intero da convertire (reso intero)
  for(i=DIM-1;i>=0;i--)	// Ciclo all'indietro, dall'ultimo elemento
  {
    n5[i]=n%BASE;	// Mette nell'elemento il bit piu' basso
    n=n/BASE;		// Divide il numero per 2, per trovareil bit successivo
  }
}

/* Stampa il numero binario, immagazzinato nel vettore n5
 */
void visb5(int n5[])
{
int i;
  for(i=0;i<DIM;i++)
  {
    printf("%d",n5[i]);
  }
  printf("\n");
}

Per provare il programma, scaricare il sorgente, compilarlo con il comando cc verifica.c ed eseguirlo con il comando ./a.out.


[Home Page dell'ITIS "Fermi"] [Indice Terza] [Precedente] [Successivo]

© Ing. Stefano Salvi - Released under GPL licence