Binary-coded decimal: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Eliminato il grassetto da varie parole
 
(19 versioni intermedie di 10 utenti non mostrate)
Riga 1:
{{F|elettronica|arg2=informatica|ottobre 2017}}
[[File:Wikipedia in binary.gif|thumb|upright=1.2|Codice binario di Wikipedia.]]
 
La [[codifica|c]] '''binary-coded decimal''' ('''BCD''') è un modo comunemente utilizzato in [[informatica]] ed [[elettronica]] per rappresentare le cifre decimali in [[sistema numerico binario|codice binario]], che sfrutta in parte la convertibilità da [[base 2]] a [[base 16]].
 
== Descrizione ==
ConIn questo formato, ogni cifra di un numero decimale è rappresentata come per un numero a base 16 da un codice binario di quattro [[bit]], il cui valore del quale è compreso tra 0 (0000) e 9 (1001). Le restanti sei combinazionicifre della base 16 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).
 
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.
I [[BIOS]] dei [[personal computer]] memorizzano la data e l'ora in formato BCD; ciò presumibilmente avviene per ragioni storiche, tenendo conto che in alcuni sistemi recenti l'anno viene rappresentato diversamente per ovviare al ''[[Millennium bug]]''.
 
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 [[Circuito integrato|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; 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 ==
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 [[IBM System/360|System/360]], l'IBM sostituì il BCD con il codice EBCDIC a 29otto 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.
Line 22 ⟶ 33:
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.
 
{| class="wikitable"
{|
!Cifra!!SBCD<br />8421!!Excess-3!!BCD<br />2421!!BCD<br />84-2-1!!IBM 1401<br />8421
|-
|'''0'''||0000||00000011||0000||0000||1010
|-
|'''1'''||0001||01010100||0001||0111||0001
|-
|'''2'''||0010||10100101||0010||0110||0010
|-
|'''3'''||0011||00100110||0011||0101||0011
|-
|'''4'''||0100||00010111||0100||0100||0100
|-
|'''5'''||0101||1111101000||1011||1011||0101
|-
|'''6'''||0110||11111001||1100||1010||0110
|-
|'''7'''||0111||00111010||1101||1001||0111
|-
|'''8'''||1000||10011011||1110||1000||1000
|-
|'''9'''||1001||100101100||1111||1111||1001
|}
 
== Diritto ==
Nel [[1972|2016]] 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).<ref>http://caselaw.lp.findlaw.com/scripts/printer_friendly.pl?page=us/409/63.html Gottschalk v Benson].</ref>
 
È un interessante caso nel complesso dibattito sulla [[Brevetto software|brevettabilità del software]].
== Note ==
<references />
 
== Voci correlate ==
Line 56 ⟶ 69:
* [[Charset]]
* [[Codice Gray]]
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC||binary coded decimal}}
* {{Garzanti|BCD}}
 
{{Portale|informatica}}
 
[[Categoria:Repertori di caratteri]]