> bcd | decimal | binær <
// BCD - binærkodet decimal til præcis decimalaritmetik
Decimalpræcision
Bevarer decimalpræcision og undgår afrundingsfejl i binær repræsentation.
Nibble-kodning
Hvert decimaltciffer kodes i præcis 4 bit (én nibble).
Flere formater
Understøtter 8421, 2421, 5421, Excess-3 og Gray BCD.
>> teknisk info
Sådan fungerer BCD:
BCD koder hvert decimaltciffer (0–9) til 4 binære bit. Forskellige BCD-formater bruger forskellige bitvægte: 8421 (standard), 2421 (selvkomplementerende), 5421 (bi-kvinar), Excess-3 (lægger 3 til hvert ciffer) og Gray BCD (minimerer bitovergange). Pakket BCD gemmer to cifre pr. byte for bedre effektivitet.
Eksempel på BCD-formater:
Decimal: 9 5 3
8421 BCD: 1001 0101 0011
2421 BCD: 1111 1011 0011
5421 BCD: 1100 1000 0011
Excess-3: 1100 1000 0110
Gray BCD: 1101 0111 0010
Pakket: 10010101 00110000
(95) (30)
Hvorfor bruge BCD:
- >Finansielle beregninger der kræver nøjagtig decimalrepræsentation
- >Digitale displays og 7-segment-dekodere
- >Real-time clock-kredsløb
- >Lommeregnere og regnechips
- >PLC- og industrielle styresystemer
>> ofte stillede spørgsmål
Hvad er BCD?
BCD (Binary-Coded Decimal) er en binær kodning af decimaltal, hvor hvert decimaltciffer repræsenteres af sin 4-bit binære værdi. Det bruges, når decimalpræcision er afgørende.
Hvorfor bruge BCD i stedet for binær?
BCD undgår afrundingsfejl i decimale beregninger og gør det nemmere at vise værdier direkte i decimalform på displays. Det er ideelt til finansielle applikationer, hvor præcise decimalresultater er nødvendige.
Hvad er pakket BCD?
Pakket BCD gemmer to decimale cifre i én byte (8 bit), hvor hver nibble repræsenterer et ciffer. Det er mere pladsbesparende end upakket BCD, som bruger en hel byte pr. ciffer.
Hvilke BCD-formater findes der?
Almindelige BCD-formater omfatter: 8421 (standard vægtet), 2421 (selvkomplementerende), 5421 (bi-kvinar), Excess-3 (hver ciffer +3) og Gray BCD (minimerer bitændringer mellem efterfølgende værdier).
// Hurtig reference
| Dec | 8421 | 2421 | Excess-3 |
|---|---|---|---|
| 0 | 0000 | 0000 | 0011 |
| 1 | 0001 | 0001 | 0100 |
| 2 | 0010 | 0010 | 0101 |
| 3 | 0011 | 0011 | 0110 |
| 4 | 0100 | 0100 | 0111 |
| 5 | 0101 | 1011 | 1000 |
| 6 | 0110 | 1100 | 1001 |
| 7 | 0111 | 1101 | 1010 |
| 8 | 1000 | 1110 | 1011 |
| 9 | 1001 | 1111 | 1100 |
// Kodeeksempler
Decimal 25 BCD 0010 0101 (packed: 0x25)
Binary 0001 1001 (0x19)
Decimal 1234 BCD 0001 0010 0011 0100 (2 bytes, packed)
Overhead 4 bits per digit vs log2(10) = 3.32 bits -> ~20% larger
Add 0x19 + 0x28 = 0x41 -> +6 correction per nibble > 9 -> 0x47
>> Flere spørgsmål
S: Hvad er BCD, og hvordan adskiller det sig fra binært?
S: I BCD kodes hvert decimalciffer for sig med 4 bit. 25 bliver 0010 0101, mens rent binært giver 11001. Decimale værdier forbliver nøjagtige og er lette at vise.
S: Hvad er pakket og upakket BCD?
S: Pakket BCD gemmer to cifre pr. byte (0x25 = 25). Upakket bruger én byte pr. ciffer; den øverste nibble er 0 eller en zonemarkør som i EBCDIC.
S: Hvorfor bruges BCD stadig?
S: Til præcis decimalaritmetik uden afrundingsfejl: finanssystemer, lommeregnere, realtidsure og 7-segmentdisplays. Prisen: 4 bit pr. ciffer i stedet for 3,32, cirka 20 % mere plads.