View Full Version : Conersione da decimale in binario
Ad un convertitore A/D a 9 bit, con una tensione di fodo scala Vfs=5V, è applicato un ingresso di 1.2 V. Mi si kiede di calcolare il codice di parola digitale in uscita.
Poikè un convertitore A/D è un dispositivo ke fornisce in uscita l'equivalente binario del rapporto tra la tensione applicata all'ingresso (purkè inferiore alla sua tensione di fondo scala) e la sua tensione di fondo scala, divido le 2 grandezze, ottenendo 0.24 .
Ma come si esprime 0.24 (ke kiaramente è espresso in decimale) in forma binaria? Come trovo cioè i 9 bit presenti all'uscita del convertitore?
giannola
16-03-2006, 18:51
Ad un convertitore A/D a 9 bit, con una tensione di fodo scala Vfs=5V, è applicato un ingresso di 1.2 V. Mi si kiede di calcolare il codice di parola digitale in uscita.
Poikè un convertitore A/D è un dispositivo ke fornisce in uscita l'equivalente binario del rapporto tra la tensione applicata all'ingresso (purkè inferiore alla sua tensione di fondo scala) e la sua tensione di fondo scala, divido le 2 grandezze, ottenendo 0.24 .
Ma come si esprime 0.24 (ke kiaramente è espresso in decimale) in forma binaria? Come trovo cioè i 9 bit presenti all'uscita del convertitore?
0.24 in binario si scrive 0.001111011
ma qual è la regola x farlo? :D
pietro84
16-03-2006, 22:45
Ad un convertitore A/D a 9 bit, con una tensione di fodo scala Vfs=5V, è applicato un ingresso di 1.2 V. Mi si kiede di calcolare il codice di parola digitale in uscita.
Poikè un convertitore A/D è un dispositivo ke fornisce in uscita l'equivalente binario del rapporto tra la tensione applicata all'ingresso (purkè inferiore alla sua tensione di fondo scala) e la sua tensione di fondo scala, divido le 2 grandezze, ottenendo 0.24 .
Ma come si esprime 0.24 (ke kiaramente è espresso in decimale) in forma binaria? Come trovo cioè i 9 bit presenti all'uscita del convertitore?
io ricordo che in un A/D a 5V e 9bit la sensibilità è 5/(2^9)V
quindi ogni volta che l'ingresso aumenta di 5/(2^9)V il valore binario in uscita si incrementa di una unità.
pietro84
16-03-2006, 22:52
se non ho sbagliato i conti il valori in uscita dovrebbe essere questo:
001111011
ok, ma non mi avete indicato un criterio per farlo
ok, ma non mi avete indicato un criterio per farlo
Le risposte precedenti sono giuste: il codice e' circa 001111011
arrotondando il 122,9 per eccesso o all'intero piu' vicino.
per ottenerlo basta fare due conti : 9 bit => 512 livelli
da cio' deriva, supponendo che la funzione di conversione sia lineare, che a ogni livello corrispondano 9,77mvolt.
Dividendo 1,2volt per 9,77mvolt si ottiene circa 122,9 che convertito in binario e' appunto 001111011.
In alternativa puoi usare la proporzione 5/1,2 = 512/x da cui x = 122,9
giannola
17-03-2006, 09:05
ok, ma non mi avete indicato un criterio per farlo
il criterio è banalissimo.
Prendi un numero decimale e lo moltiplichi per 2, se il risultato resta decimale allora scrivi 0 e continui, se il numero supera la virgola scrivi 1 e riprendi a calcolare.
esempio:
0,24*2 = 0,48 (quindi 0), vai avanti 0,48*2 = 0,96 (sempre zero), 0,96*2 =1,92(a questo punto scrivi 1 e riprendi a calcolare come se nn ci fosse), 0,92*2 = 1,84.....
Prosegui fin quando nn hai l'approssimazione desiderata, nel tuo caso 9 cifre.
;)
pietro84
17-03-2006, 10:14
Le risposte precedenti sono giuste: il codice e' circa 001111011
arrotondando il 122,9 per eccesso o all'intero piu' vicino.
per ottenerlo basta fare due conti : 9 bit => 512 livelli
da cio' deriva, supponendo che la funzione di conversione sia lineare, che a ogni livello corrispondano 9,77mvolt.
Dividendo 1,2volt per 9,77mvolt si ottiene circa 122,9 che convertito in binario e' appunto 001111011.
In alternativa puoi usare la proporzione 5/1,2 = 512/x da cui x = 122,9
esatto è lo stesso ragionamento che fatto io
il criterio è banalissimo.
Prendi un numero decimale e lo moltiplichi per 2, se il risultato resta decimale allora scrivi 0 e continui, se il numero supera la virgola scrivi 1 e riprendi a calcolare.
esempio:
0,24*2 = 0,48 (quindi 0), vai avanti 0,48*2 = 0,96 (sempre zero), 0,96*2 =1,92(a questo punto scrivi 1 e riprendi a calcolare come se nn ci fosse), 0,92*2 = 1,84.....
Prosegui fin quando nn hai l'approssimazione desiderata, nel tuo caso 9 cifre.
;)
era proprio quello ke intendevo
tnx :)
p.s.: il metodo è l'unico possibile vero? :p
Le risposte precedenti sono giuste: il codice e' circa 001111011
arrotondando il 122,9 per eccesso o all'intero piu' vicino.
per ottenerlo basta fare due conti : 9 bit => 512 livelli
da cio' deriva, supponendo che la funzione di conversione sia lineare, che a ogni livello corrispondano 9,77mvolt.
Dividendo 1,2volt per 9,77mvolt si ottiene circa 122,9 che convertito in binario e' appunto 001111011.
In alternativa puoi usare la proporzione 5/1,2 = 512/x da cui x = 122,9
122,9 indica ke il numero decimale 0.24 corrisponde al 123° livello di quntizzazione sui 512 a disposizione? :confused:
quindi non è ke 122,9 è un numero decimale ke va convertito in binario secondo il metodo indicato da giannola? :mbe:
pietro84
17-03-2006, 17:34
122,9 indica ke il numero decimale 0.24 corrisponde al 123° livello di quntizzazione sui 512 a disposizione?
esatto. Questo è il ragionamento che va fatto
giannola
17-03-2006, 17:46
era proprio quello ke intendevo
tnx :)
p.s.: il metodo è l'unico possibile vero? :p
no ne conosco uno per la conversione dei floating point (IEEE 754, guarda su wikipedia).
Il vantaggio è che non devi più approssimare il numero fino all'ennesima cifra, ma puoi averne una rappresentazione completa.
Lo svantaggio è che è particolarmente laborioso.
esatto. Questo è il ragionamento che va fatto
e da qui, ke modo usi poi x sapere a quale stringa di 9 bit corrisponde il 123° livello?
pietro84
17-03-2006, 18:51
e da qui, ke modo usi poi x sapere a quale stringa di 9 bit corrisponde il 123° livello?
basta convertire in base 2 il numero 123
basta convertire in base 2 il numero 123
e come faccio?
se seguo il metodo precedente, avrei:
123*2=246 --> 0 oppure 1???
246*2=492 --> 0 oppure 1???
...
:confused:
giannola
18-03-2006, 13:40
e come faccio?
se seguo il metodo precedente, avrei:
123*2=246 --> 0 oppure 1???
246*2=492 --> 0 oppure 1???
...
:confused:
diviso due fin quando nn è più divisibile.
Il moltiplicare per due vale solo per i decimali, infatti un numero tipo 12.25 va diviso.
Il 12 lo dividi per 2 e il 25 lo moltiplichi, poi metti insieme il numero.
12 = 1100.01
pietro84
18-03-2006, 15:57
e come faccio?
se seguo il metodo precedente, avrei:
123*2=246 --> 0 oppure 1???
246*2=492 --> 0 oppure 1???
...
:confused:
è banale.
per esempio convertiamo il numero 12.
dividi sempre per due e prendi in considerazione il resto:
12:2=6 resto 0
6:2= 3 resto 0
3:2= 1 resto 1
1:2= 0 resto 1
quindi il numro 12 espresso in base 2 è : 1100
pietro84
18-03-2006, 16:42
no ne conosco uno per la conversione dei floating point (IEEE 754, guarda su wikipedia).
potresti postare direttamente il link? :)
giannola
18-03-2006, 16:48
potresti postare direttamente il link? :)
http://it.wikipedia.org/wiki/IEEE_754
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.