Codifiche numeriche
La numerazione binaria pura NON è la sola modalità di codifica dei numeri in codice binario.
Le più usate sono:
- - la codifica BCD
- - la codifia Gray
Codice BCD
La codifica binary-coded decimal (BCD) è un modo comunemente utilizzato in informatica ed elettronica per rappresentare le cifre decimali in codice binario.
Con questo formato ogni cifra di un numero è rappresentata da un codice binario di quattro bit, il cui valore è compreso tra 0 (0000) e 9 (1001). Le restanti sei combinazioni possono essere usate per rappresentare simboli. Per esempio il numero 127 è rappresentato in BCD come 0001, 0010, 0111. Durante la somma se il risultato supera 9 (1001) si somma 6(0110).
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 con zeri o uno (come nel codice EBCDIC), oppure mettere due cifre per byte, modalità chiamata packed BCD. I numeri 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.
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 sostituire i primi quattro bit inutilizzati con 0011 per ottenere il corrispondente ASCII.
Il codice BCD è molto usato in elettronica, specialmente in circuiti digitali privi di microprocessore, perché facilita la visualizzazione di lunghe cifre su 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 formato BCD.
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 | BCD 2421 |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0010 |
3 | 0011 | 0011 |
4 | 0100 | 0100 |
5 | 0101 | 1011 |
6 | 0110 | 1100 |
7 | 0111 | 1101 |
8 | 1000 | 1110 |
9 | 1001 | 1111 |
Codice Gray
Il codice di Gray, è un codice binario a lunghezza fissa. Si possono usare codici di Gray di tutte le lunghezze: il codice di lunghezza s è costituito da tutte le sequenze di s bit e consente di rappresentare tutti gli interi da 0 a .
Esso differisce dalla notazione posizionale binaria degli interi in quanto prevede che si passi da un intero al successivo modificando un solo bit; questa caratteristica (detta a cambio 1) semplifica e rende meno soggette ad errori le operazioni di dispositivi elettronici che devono scorrere informazioni organizzate in sequenze. Evidentemente la codifica di Gray risulta poco sensata per interi da sottoporre ad operazioni come somme o prodotti.
Diversi dispositivi elettronici di acquisizione di posizione, tra cui gli encoder (lineari o rotativi, come - per esempio - i regolatori di volume digitali negli impianti Hi-Fi), codificano il valore digitale della posizione chiudendo o aprendo una serie di contatti elettrici o barriere ottiche. Il problema è che a causa delle tolleranze meccaniche è improbabile che due o più bit di una cifra possano commutare esattamente nello stesso istante. Viene a crearsi una configurazione fisica intermedia in cui è codificato un valore indesiderato, che può generare errore nella successiva elaborazione.
Per evitare queste difficoltà fu progettato e brevettato nel 1953 dal ricercatore Frank Gray dei laboratori Bell il codice che ora porta il suo nome.
Negli encoder che utilizzano questo codice, il passaggio da un valore al successivo o precedente comporta la commutazione di un unico circuito, eliminando ogni possibile errore dovuto a codifiche binarie intermedie.
Va notato che anche nel passaggio dall'ultima alla prima parola del codice cambia solamente un bit.
Codice Gray a 2 bit 00 01 11 10
Codice Gray a 3 bit 000 001 011 010 110 111 101 100
Codice Gray a 4 bit 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Codice Gray a 5 bit 00000 00001 00011 00010 00110 00111 00101 00100 01100 01101 01111 01110 01010 01011 01001 01000 11000 11001 11011 11010 11110 11111 11101 11100 10100 10101 10111 10110 10010 10011 10001 10000