[RISOLTO] Double dabble e inverso
- ubuntumate
- Entusiasta Emergente
- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
[RISOLTO] Double dabble e inverso
Ho annotato tutti gli esercizi del Kime-Mano che non sono riuscito a svolgere e ora sto colmando, man mano, le lacune. Ora tocca alla conversione (packed) BCD binario e viceversa. Sul libro vengono date le seguenti istruzioni per effettuare la conversione:
1) Separate le decadi BCD a 4 bit con una linea
2) Traslate il numero BCD a di un bit destra (shift a destra o rotazione?)
3) Sottraete 0011 da ciascun decade contenente un valore maggiore di 7
4) Ripetere i passi 2 e 3 finché MSB del numero BCD non viene traslato fuori dalla decade meno significativa
5) Leggete il numero binario a partire dalla destra della decade BCD meno significativa.
Quel che non capisco è come sia possibile ottenere un numero in binario se devo fare lo shift a destra del numero in BCD finché l'MSB non viene traslato fuori dall'ultima decade: viene sempre zero! Potreste fare un esempio di conversione con il numero BCD 0111 1000, per favore?
1) Separate le decadi BCD a 4 bit con una linea
2) Traslate il numero BCD a di un bit destra (shift a destra o rotazione?)
3) Sottraete 0011 da ciascun decade contenente un valore maggiore di 7
4) Ripetere i passi 2 e 3 finché MSB del numero BCD non viene traslato fuori dalla decade meno significativa
5) Leggete il numero binario a partire dalla destra della decade BCD meno significativa.
Quel che non capisco è come sia possibile ottenere un numero in binario se devo fare lo shift a destra del numero in BCD finché l'MSB non viene traslato fuori dall'ultima decade: viene sempre zero! Potreste fare un esempio di conversione con il numero BCD 0111 1000, per favore?
Ultima modifica di ubuntumate il domenica 4 settembre 2016, 22:19, modificato 1 volta in totale.
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- M_A_W_ 1968
- Scoppiettante Seguace
- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: Double dabble e inverso
Credo che questo esempio ti chiarirà definitivamente le idee. Si tratta di una banalità assoluta, totalmente meccanica.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: Double dabble e inverso
Non ho mai capito bene nemmeno io come si fa una BCD, quindi leggo con interesse.
Avevo routines assembly pronte nel caso con i pic, ma non mi sono mai curato molto.
Però avevo capito questo: supponi di avere registri a 8 bits quindi 0-255
hai il numero 315, come appare ?
Io calcolavo così:
315/255=1
315-255=60
quindi registro Hight =1 (00000001)
registro Low 60 (111100)
quindi 255*1+60
Ma magari questo lo sai già.
Intanto seguo con interesse, anche se purtroppo non uso più i micro
So già che MAW mi tirerai le orecchie
Avevo routines assembly pronte nel caso con i pic, ma non mi sono mai curato molto.
Però avevo capito questo: supponi di avere registri a 8 bits quindi 0-255
hai il numero 315, come appare ?
Io calcolavo così:
315/255=1
315-255=60
quindi registro Hight =1 (00000001)
registro Low 60 (111100)
quindi 255*1+60
Ma magari questo lo sai già.
Intanto seguo con interesse, anche se purtroppo non uso più i micro
So già che MAW mi tirerai le orecchie
- ubuntumate
- Entusiasta Emergente
- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: Double dabble e inverso
Esattamente. Non riuscivo ad effettuare la conversione perché non mi annotavo i bit traslati al di fuori della decade meno significativaM_A_W_ 1968 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4911933#p4911933][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Credo che questo esempio ti chiarirà definitivamente le idee. Si tratta di una banalità assoluta, totalmente meccanica.
library triviality
use triviality.bcd2bin
Codice: Seleziona tutto
begin
BCD: 0111-1000
>> 0011-1100 BIN: 0
-3 0011-1001 -
>> 0001-1100 BIN: 10
-3 0001-1001 -
>> 0000-1100 BIN: 110
-3 0000-1001 -
>> 0000-0100 BIN: 1110
>> 0000-0010 BIN: 01110
>> 0000-0001 BIN: 001110
>> 0000-0000 BIN: 1001110 = 64 + 8 + 4 + 2 = 78 DEC
end
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- M_A_W_ 1968
- Scoppiettante Seguace
- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: Double dabble e inverso
@Gila: come homework, studia a memoria questo.
Se avessi un dollaro per ogni scheda di contaeventi, contapezzi, contacolpi, visualizzatore quote e HMI assortite che ho progettato e realizzato da studente negli anni Ottanta con decoder BCD, contatori binari o Johnson e decoder per 7 segmenti (quasi sempre in versione militare 54xxx, e comunque in applicazioni nelle quali per vari motivi non si poteva usare una qualsiasi MCU commerciale), con contorno di contraves, safety switches e display a LED 7-segment o British Flag, potrei fare collezione di Ferrari. In scala 1:1.
Poi ho avuto la possibilità di mettere davvero le mani sotto il cofano e quella manciata di chip è diventata un ASIC, poi un SoC... ma questa è un'altra storia.
Se avessi un dollaro per ogni scheda di contaeventi, contapezzi, contacolpi, visualizzatore quote e HMI assortite che ho progettato e realizzato da studente negli anni Ottanta con decoder BCD, contatori binari o Johnson e decoder per 7 segmenti (quasi sempre in versione militare 54xxx, e comunque in applicazioni nelle quali per vari motivi non si poteva usare una qualsiasi MCU commerciale), con contorno di contraves, safety switches e display a LED 7-segment o British Flag, potrei fare collezione di Ferrari. In scala 1:1.
Poi ho avuto la possibilità di mettere davvero le mani sotto il cofano e quella manciata di chip è diventata un ASIC, poi un SoC... ma questa è un'altra storia.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
- ubuntumate
- Entusiasta Emergente
- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: Double dabble e inverso
Grazie @MAW, alla prossima banalità
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [RISOLTO] Double dabble e inverso
Sono stato onesto è ho dichiarato la mia ignoranza@Gila: come homework, studia a memoria questo.
Non si dovrebbero mai usare routines a scatola chiusa, ma in Assembler con i micro su BCD 16, 24 ecc... bits
e operazioni che superano il misero registro 8 bits ho sempre rimandato lo studio....purtroppo
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 19 ospiti