Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Packed BCD?
Forum - C/C++ - Packed BCD? - Pagina 4

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:54
Lunedì, 24/02/2014
No, il metodo è un altro ma prima dovresti dire se sai usare gli operatori a bit and & e or |


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:04
Lunedì, 24/02/2014
Guarda ... lasciamo perdere gli operatori & e | e studia questo codice, con le funzioni e un main che convertono un numero, positivo o negativo

Codice sorgente - presumibilmente C++

  1. void BinToDigits(int n, int *r)
  2. {
  3.         if(n)
  4.         {
  5.                 BinToDigits(n/10, r);
  6.                
  7.                 *r = *r*16+n%10;
  8.         }
  9. }
  10.  
  11. void BinToBCD(int bin, int *bcd)
  12. {
  13.         *bcd = 12;
  14.  
  15.         if(bin<0)
  16.         {
  17.                 ++(*bcd);
  18.  
  19.                 bin = -bin;
  20.         }
  21.  
  22.         BinToDigits(bin, bcd);
  23. }
  24.  
  25. int main()
  26. {
  27.         int val = 12345;  // Prova anche con -12345
  28.         int vbcd = 0;
  29.  
  30.         BinToBCD(val, &vbcd);
  31.  
  32.         printf("%X\n", vbcd);
  33.  
  34.         return 0;
  35. }



Tutto quello che non comprendi lo chiedi ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 15:19
Martedì, 25/02/2014
Ma convertono il numero in BCD? Cosa è r,n e bcd? Comunque non riesco a capire molto eh.. qualche commento sulle istruzioni magari non fa male :rofl:

Ultima modifica effettuata da perillitommaso il 25/02/2014 alle 15:32
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:44
Martedì, 25/02/2014
Testo quotato

Ma convertono il numero in BCD?



Mi sembra evidente.

Il programma, a partire dal main, converte il valore

val

che ho inserito nel codice ma che tu inserirai da tastiera, in un valore bcd in

vbcd

che viene visualizzato dall'ultima printf.


r è una puntatore alla variabile usata per accumulare il risultato BCD della conversione.

n è il valore da convertire, cifra dopo cifra

bcd, come r


- il main chiama la funzione BinToBCD che accetta il valore da convertire e un puntatore ad una variabile inizialmente azzerata che conterrà il risultato
- la BinToBCD imposta il segno BCD del valore da convertire (1100 oppure 1101, ovvero 12 oppure 13) e imposta il valore assoluto del valore da convertire
- viene chiamata la funzione BinToDigits che converte e aggiunge le singole cifre del numero
- la BitToDigits è ricorsiva (chiama sé stessa); trova le singole cifre del valore (con n%10, n/10) e le aggiunge, dalla prima all'ultima, al valore BCD puntato da r


Ah, prego ...

Ultima modifica effettuata da nessuno il 25/02/2014 alle 15:47


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 16:28
Martedì, 25/02/2014
Io non so come ringraziarti, veramente... adesso dovrei mettere tutto questo nel mio main ... ogni variabile deve essere dichiarata giusto? Tutte di tipo intero? E le funzioni non devono essere precedute dal void? Non ci dovrebbero esserci dei prototipi prima del main? Io faccio così, metto prima il prototipo, poi il main e poi la funzione

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:24
Martedì, 25/02/2014
Va bene ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 17:45
Martedì, 25/02/2014
Solo che adesso mi accorgo che ci siamo dimenticati che nella traccia c'è scritto che dobbiamo fare la somma tra A e B e assegnare poi il risultato a C

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 17:52
Martedì, 25/02/2014
E comunque l'ho provato e mi esce visualizzato solo G12345

PM Quote
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo