[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