[RISOLTO] Double dabble e inverso

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

[RISOLTO] Double dabble e inverso

Messaggio da ubuntumate »

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? :birra:
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.
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
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

Messaggio da M_A_W_ 1968 »

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?"
gila75
Imperturbabile Insigne
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

Messaggio da gila75 »

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 :D
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

Re: Double dabble e inverso

Messaggio da ubuntumate »

M_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.
Esattamente. Non riuscivo ad effettuare la conversione perché non mi annotavo i bit traslati al di fuori della decade meno significativa :D

library triviality
use triviality.bcd2bin :D

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.
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
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

Messaggio da M_A_W_ 1968 »

@Gila: come homework, studia a memoria questo. :lol:

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. :D
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?"
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

Re: Double dabble e inverso

Messaggio da ubuntumate »

Grazie @MAW, alla prossima banalità :birra:
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.
gila75
Imperturbabile Insigne
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

Messaggio da gila75 »

@Gila: come homework, studia a memoria questo. :lol:
Sono stato onesto è ho dichiarato la mia ignoranza :D
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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 19 ospiti