Binærkodet desimal ( BCD ) -koding er en ofte brukt måte i databehandling og elektronikk for å representere desimalsifre i binær kode , som delvis utnytter base 2 til base 16 konvertibilitet .
I dette formatet er hvert siffer i et desimaltall representert som for et grunntall 16 med en fire - bits binær kode , hvis verdi er mellom 0 (0000) og 9 (1001). De resterende seks sifrene i base 16 kan brukes til å representere symboler. For eksempel er tallet 127 representert i BCD som 0001, 0010, 0111.
Selv om BCD innebærer en betydelig sløsing med biter (omtrent 1/6 av ubrukt minne i pakket BCD), er det i noen tilfeller å foretrekke fordi det har en direkte samsvar med ASCII -koden . Faktisk er det tilstrekkelig å legge til 0011 på toppen av de fire bitene for å få den tilsvarende ASCII.
I tillegg, hvis resultatet overstiger 9 (1001), legges 6 (0110) til, det vil si mengden ubrukte kodinger (fra 1010 til 1111).
Siden datamaskiner lagrer data i byte , på åtte biter, er det med denne kodingen mulig å lagre ett siffer per byte og fylle de resterende fire ledende bitene med nuller eller enere (som i EBCDIC -koden ), eller sette to siffer per byte, kalt moduspakket BCD .
Tall i BCD-pakket notasjon slutter vanligvis med en tegnkode, vanligvis 1100 for + og 1101 for minus. Tallet 127 er representert av 11110001, 11110010, 11110111 i EBCDIC og 00010010, 01111100 i pakket BCD.
BCD-koden er mye brukt i elektronikk, spesielt i digitale kretser uten mikroprosessor , fordi den letter visualiseringen av lange sifre på skjermer med syv segmenter . Faktisk tilsvarer hver fysisk visning nøyaktig ett siffer. Det er spesielle integrerte kretser som utfører konverteringen fra BCD i den tilsvarende tenningssekvensen av segmentene. Selv utførelse av enkle aritmetiske beregninger er lettere å utføre på BCD-sifre for kombinasjonslogiske kretser.
PC - BIOS lagrer dato og klokkeslett i BCD; dette skjer antagelig av historiske årsaker, tatt i betraktning at i noen nyere systemer er året representert annerledes for å avhjelpe Millennium-feilen .
IBM bruker begrepet binærkodet desimal eller BCD for en proprietær seks-bits alfanumerisk kode (base 64: 2 ^ 6), som representerer tall, store alfabetiske bokstaver og andre spesialtegn.
I de første IBM-datamaskinene (IBM 1620, IBM 1400-serien og ikke-desimale enheter i IBM 700/7000-serien) ble flere varianter av BCD tatt i bruk. Med introduksjonen av System / 360 erstattet IBM BCD med den åtte-biters EBCDIC-koden.
Bitposisjoner i IBM BCD-kode er vanligvis merket med B, A, 8, 4, 2, 1 . A og B er null når et numerisk siffer er kodet.
I BCD 1062 ble alfabetiske tegn kodet ved å bruke partallsbiter i bitpar, og ved å bruke oddebiter for sifre. Spesiell maskinvare konvertert mellom denne interne kodingen og seks-bits BCD-kode brukt eksternt.
Følgende tabell oppsummerer kodingen av sifrene fra null til ni av noen BCD-systemer.
For klarhetens skyld kalles standard BCD som er beskrevet i begynnelsen av artikkelen Simple Binary-Coded Decimal ( SBCD ) eller BCD 8421 , hvor 8421 indikerer vekten av bitene.
Figur | SBCD 8421 |
Overskudd-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 |
I 1972 omgjorde USAs høyesterett en avgjørelse fra en mindre domstol som autoriserte et patent for konvertering av BCD til binær (Gottschalk v. Benson). [1] Det er en interessant sak i den komplekse debatten om hvorvidt man skal gi programvarepatenter eller ikke .