Codifica BCD
Nella codifica BCD i numeri decimali vengono rappresentati singolarmente da 1 (0001) a 9 (1001), nella somma se il risultato supera il 9 viene sommato ad esso 6 in binario (0110) Poi il risultato della somma viene diviso in 4 bit e si ottengono 2 cifre in decimale, per esempio la somma di 5 e 9 (14): 5 in binario è 101 mentre 9 lo conosciamo, la somma è quindi 1110 dato che supera 9 sommiamo ad esso 6 in binario quindi 0110 che viene 10100 (20 in decimale) prolunghiamo ad 8 bit e quindi diventa 00010100 prendiamo poi 4 bit alla volta ottenendo 2 numeri in binario distinti 0001 e 0100 ovvero 1 e 4 che sono le cifre del risultato decimale.
La mia domanda consiste proprio nel fatto di come sia possibile che risulti sempre così, qual'è la dimostrazione che sommando 6 in binario si ottengono ancora in binario le cifre singole del risultato ottenuto per 4 bit alla volta?
La mia domanda consiste proprio nel fatto di come sia possibile che risulti sempre così, qual'è la dimostrazione che sommando 6 in binario si ottengono ancora in binario le cifre singole del risultato ottenuto per 4 bit alla volta?
Risposte
La ragione è che tu stai rappresentando i numeri decimale usando il numero esadecimale con le stesse cifre. Il problema è che quando fai la somma, la stai facendo in esadecimale. Se dopo la somma hai una cifra maggiore di 9 allora hai ottenuto una cifra del tipo (10 + c) dove c è la cifra decimale che desideri ottenere e 10 rappresenta l'importo da aggiungere alla cifra successiva (cioè vuoi incrementare la successiva cifra di uno). Aggiungendo 6 a tale numero ottieni il valore (16 + c) che aggiunge quindi correttamente una unità alla cifra successiva.
Forse ho capito, praticamente nel mio caso 9+5 in decimale diventerebbe 10+4 cioé 14, nel mio caso però 10 è l'unità di ordine più alto, mentre in binario sarebbe 16 l'ordine più alto, pertanto dovrei sommare 6 per avere 10+4+6=16+4 che diventa ora come nel caso decimale, da cui posso ricavare 4 dato che sommo il 16 (a 5 bit) con il 4 (4 bit), è giusto il ragionamento?
Ti correggo comunque dicendo che il sistema è binario non esadecimale, o forse hai voluto dire proprio esadecimale per riferirti al 16.. in ogni caso grazie mille per il tuo aiuto
Ti correggo comunque dicendo che il sistema è binario non esadecimale, o forse hai voluto dire proprio esadecimale per riferirti al 16.. in ogni caso grazie mille per il tuo aiuto

A livello macchina è certamente binario, ma ogni cifra decimale è memorizzata nella sua codifica binari a 4 bit. Quindi di fatto il numero che sta rappresentando è il numero esadecimale con la stessa cifra. Quello che indendo insomma dire è che se tu hai un numero decimale qualsiasi, la rappresentazione binaria usata è la stessa che avresti rappresentando in binario il numero esadecimale con le stesse cifre. Se hai quindi il numero decimale 15 in BCD, la rappresentazione binaria è la stessa che avresti rappresentando in formato binario normale 0x15 = 21.
Ah ok, ehi grazie mille per l'aiuto adesso mi è chiaro
