[Tech] Domanda di C
Daniele Masini
d.masini@tiscali.it
Mer 26 Maggio 2004 16:22:35 CEST
Basta inserire in una variabile long la parte più significativa del valore
moltiplicata per 256 e quindi sommarci quella meno significativa.
Saluti,
Daniele
Valerio Montagnani wrote:
> Ciao a tutti.
>
>
> 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?
>
> Spero di essere stato chiaro, grazie, Vale
>
Maggiori informazioni sulla lista
flug-tech