Pagine

venerdì 9 novembre 2012

MATLAB - Conversione di un numero binario in virgola fissa in decimale

Come esempio, si prenda un numero binario da 16 bit di lunghezza totale (8 bit per la parte intera e i restanti 8 per la parte frazionaria):

0011010111001110   (00110101.11001110)

Per prima cosa si crea una variabile che contiene le informazioni riguardanti il tipo di rappresentazione che si sta usando:

q = quantizer ([16 8])


In questo modo, si crea un oggetto che contiene le seguenti informazioni:

q =


        DataMode = fixed
       RoundMode = floor
    OverflowMode = saturate
          Format = [16  8]



Specificando soltanto la lunghezza di parola e della parte frazionaria, la funzione imposta di default il tipo di dato (virgola fissa), se si stanno utilizzando o meno numeri numeri con segno (complemento a 2) e altre caratteristiche (si rimanda all'Help del programma per ulteriori informazioni).
Si passa quindi alla conversione, usando la funzione bin2num, a cui vanno forniti l'oggetto appena creato e il numero binario sotto forma di stringa.

bin2num (q, '0011010111001110')

ans =

   53.8047

Come detto in precedenza, i numeri vengono considerati di default in complemento a 2. Se si prende per esempio il numero

1111001011101101  (11110010.11101101)

ed effettuando una nuova conversione, si ottiene:

bin2num (q, '1111001011101101')

ans =

  -13.0742









Nessun commento:

Posta un commento