[Tech] OT: C, linux e la rappresentazione in mem

david mugnai david.mugnai@spacespa.it
Lun 1 Mar 2004 16:52:56 CET


Valerio Montagnani wrote:

> Ciao amici, vi vorri sottoporre questo quisito:
> 
> devo acquisire un segnale audio e poi elaborarlo successivamente. I
> seguenti parametri non possono essere cambiati:
> 
> 16 bit 2 canali 8000 Hz di freq. di campionamento. durata
> acquisizione 60 sec.
> 
> la quantità di memoria da allocare è: 60*16*2*8000=15360000 bit.
> 
> Voglio che il buffer che dovrà contenere i dati audio, sia un buffer
> in allocazione dinamica di tipo float, per cui:
Perche' usi il float?

> in linux sizeof(float)=4 (32 bit),
L'equivalenza di sopra e' piu' legata all'architettura del tuo pc che al
sistema operativo

> Qui viene il mio dubbio. La scheda audio quantizza il suono con 16
> bit (come richiesto). Un tipo float usa 32 bit per la
> rappresentazione di un numero. Quindi nel mio buffer avrò i 16 bit
> più rappresentativi tutti con il valore 0, mentre i meno
> significativi saranno effettivamente impiegati per la
Questo non e' vero.
i float utilizzano i 32bit in maniera diversa dagli interi, te ne puoi 
sincerare con questo codice:

---code
#include <stdio.h>

int main(void) {
     int k=1;
     float j=1;

     char *buff;
     buff=(char*)&k;
     printf("%d %d %d 
%d\n",(int)buff[0],(int)buff[1],(int)buff[2],(int)buff[3]);
     buff=(char*)&j;
     printf("%d %d %d 
%d\n",(int)buff[0],(int)buff[1],(int)buff[2],(int)buff[3]);
}
---/code
Il come vengono memorizzati i numeri in virgola mobile, dipende ancora 
una volta dall'architettura del tuo pc (sul manuale dei pentium dovrebbe 
essere scritto chiaramente)

> rappresentazione del campione audio. Inoltre dato che l'acquisizione
> avviene su 2 canali (acquisizione stereo) significa che nel buffer
> finiscono 32 bit per il canale sx e 32 bit per il canale dx,
> rappresentati come descritto prima.
Questo non lo so :)

byez

-- 
If Bill Gates had a dime for every time a Windows box crashed...oh, wait
a minute - he already does.



Maggiori informazioni sulla lista flug-tech