Binary-coded decimal

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Binary Coded Decimal)
Vai alla navigazione Vai alla ricerca
Codice binario di Wikipedia.

La codifica binary-coded decimal (BCD) è un modo comunemente utilizzato in informatica ed elettronica per rappresentare le cifre decimali in codice binario, che sfrutta in parte la convertibilità da base 2 a base 16.

In questo formato, ogni cifra di un numero decimale è rappresentata come per un numero a base 16 da un codice binario di quattro bit, il valore del quale è compreso tra 0 (0000) e 9 (1001). Le restanti sei cifre della base 16 possono essere usate per rappresentare simboli. Per esempio il numero 127 è rappresentato in BCD come 0001, 0010, 0111.

Sebbene il BCD comporti un notevole spreco di bit (circa 1/6 di memoria inutilizzata in packed BCD), in alcuni casi è preferibile perché ha una diretta corrispondenza con il codice ASCII. È sufficiente infatti aggiungere, in testa ai quattro bit, 0011 per ottenere il corrispondente ASCII.

Nell'addizione, se il risultato supera 9 (1001), si somma 6(0110) cioè la quantità di codifiche inutilizzate (da 1010 a 1111).

Poiché i computer memorizzano i dati in byte, di otto bit, con tale codifica è possibile memorizzare una cifra per byte e riempire i restanti quattro bit iniziali con zeri o uno (come nel codice EBCDIC), oppure mettere due cifre per byte, modalità chiamata packed BCD.

I numeri in notazione packed BCD normalmente terminano con un codice di segno, solitamente 1100 per il + e 1101 per il meno. Il numero 127 si rappresenta 11110001, 11110010, 11110111 in EBCDIC e 00010010, 01111100 in packed BCD.

Il codice BCD è molto usato in elettronica, specialmente in circuiti digitali privi di microprocessore, perché facilita la visualizzazione di lunghe cifre sui display a sette segmenti. Infatti ad ogni display fisico corrisponde esattamente una cifra. Esistono appositi circuiti integrati che effettuano la conversione da BCD nella corrispondente sequenza di accensione dei segmenti. Anche l'esecuzione di semplici calcoli aritmetici è più semplice da effettuarsi su cifre BCD per circuiti logici combinatori.

I BIOS dei personal computer memorizzano la data e l'ora in BCD; ciò presumibilmente avviene per ragioni storiche, tenendo conto che in alcuni sistemi recenti l'anno viene rappresentato diversamente per ovviare al Millennium bug.

L'IBM e il BCD[modifica | modifica wikitesto]

L'IBM utilizza il termine binary-coded decimal o BCD per un codice alfanumerico proprietario a sei bit (base 64: 2^6), che rappresenta numeri, lettere alfabetiche maiuscole e altri caratteri speciali.

Nei primi computer IBM (IBM 1620, serie IBM 1400 e unità non decimali delle serie IBM 700/7000) furono adottate diverse varianti del BCD. Con l'introduzione del System/360, l'IBM sostituì il BCD con il codice EBCDIC a otto bit.

Le posizioni dei bit nel codice BCD IBM sono comunemente etichettate B, A, 8, 4, 2, 1. A e B valgono zero quando è codificata una cifra numerica.

Nel BCD 1062 caratteri alfabetici erano codificati usando i bit pari in coppie di bit, ed usando i bit dispari per le cifre. Un apposito hardware convertiva tra questa codifica interna e in codice BCD a sei bit usato all'esterno.

Riassumendo[modifica | modifica wikitesto]

La seguente tabella riassume la codifica delle cifre da zero a nove di alcuni sistemi BCD.

Per chiarezza il BCD standard descritto all'inizio dell'articolo è chiamato Simple Binary-Coded Decimal (SBCD) o BCD 8421, dove 8421 indica il peso dei bit.

Cifra SBCD
8421
Excess-3 BCD
2421
BCD
84-2-1
IBM 1401
8421
0 0000 0011 0000 0000 1010
1 0001 0100 0001 0111 0001
2 0010 0101 0010 0110 0010
3 0011 0110 0011 0101 0011
4 0100 0111 0100 0100 0100
5 0101 1000 1011 1011 0101
6 0110 1001 1100 1010 0110
7 0111 1010 1101 1001 0111
8 1000 1011 1110 1000 1000
9 1001 1100 1111 1111 1001

Diritto[modifica | modifica wikitesto]

Nel 1972 la Corte Suprema degli Stati Uniti ha annullato una decisione di una corte minore che autorizzava un brevetto per la conversione di BCD in binario (Gottschalk contro Benson).[1]

Note[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica