[Tech] Domanda di C
Claudio Kutufà
claudiok@nexusfi.it
Mer 26 Maggio 2004 16:16:09 CEST
>Devo amplificare dei valori acquisiti da un microfono secondo la specifica
>Little Endian di intel.
>I dati Little Endian misciano i bit nel seguente modo: supponiamo di avere
>un dato unsigned char (8bit).
>Sia il valore da rappresentare il numero: 84
>in binario il numero 128 è 10000000; secondo LE (Little Endian) 84 si
>rappresenta così: 0100 0101, cioè i bit meno significativi del numero da
>rappresentare, stanno nella parte alta del registro della memoria.
>Per amplificare il numero ho pensato di disassemblare il registro in due
>variabili: left = 0100 e right = 0101 e quindi shiftare i bit verso
>sinistra, per esempio di 4 posizioni (all'atto pratico questo significa
>moltiplicare per 16 il valore 0100 e 0101 separatamente).
>Il risultato ottenuto è effettivamente quello voluto: 01000000 01010000.
>Per rappresentare questi ultimi numeri ho usato due variabili di tipo int.
>
>Il problema arriva ora: come faccio a rappresentare il numero
>correttamente amplificato in una variabile sola di tipo int secondo le
>specifiche LE?
>In altre parole come creo la sequenza 16 (01000000) 80 (01010000) in un
>solo intero?
non so se ho ben capito.... ma vediamo:
castizza il moltiplicato per 16 ad unsigned int, spostalo a sin di 8 (
variabile << 8;)
e poi sommagli la variabile che rappresenta i meno significativi, dovrebbe
funzionare
>Spero di essere stato chiaro, grazie, Vale
ciao
Claudio
_____________________________________________________________
Ing. Claudio Kutufa'
NEXUS SISTEMI INFORMATIVI S.P.A.
e-mail personale: claudiok@nexusfi.it
tel. cellulare: 335 5859567
Sede Oper.va : Via Dante da Castiglione, 33
Tel. : +39 055 229413 Fax : +39 055 229785
50125 Firenze - Italy
Sede Amm.va : Via Panciatichi 40/11
Tel. : +39 055 4222030 Fax : +39 055 4376670
50100 Firenze - Italy
Nexus home page: www.nexusfi.it
_____________________________________________________________
Maggiori informazioni sulla lista
flug-tech