> bcd | decimal | binär <
// BCD - binärkodad decimal för exakt decimalaritmetik
Decimalnoggrannhet
Bevarar decimalnoggrannhet och undviker avrundningsfel från binär representation.
Nibble-kodning
Varje decimalsiffra kodas i exakt 4 bitar (en nibble).
Flera format
Stöd för BCD-formaten 8421, 2421, 5421, Excess-3 och Gray BCD.
>> teknisk information
Hur BCD fungerar:
BCD kodar varje decimalsiffra (0–9) till 4 binära bitar. Olika BCD-format använder olika bitvikter: 8421 (standard), 2421 (självkompletterande), 5421 (bi‑kvinar), Excess‑3 (lägger till 3 till varje siffra) och Gray BCD (minimerar bitövergångar). Packad BCD lagrar två siffror per byte för högre effektivitet.
Exempel på BCD-format:
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
Packad: 10010101 00110000
(95) (30)
Varför använda BCD:
- >Finansiella beräkningar som kräver exakt decimalrepresentation
- >Digitala displayer och sju‑segment‑avkodare
- >Real‑tids‑klockkretsar
- >Miniräknare och beräkningskretsar
- >PLC:er och industriella styrsystem
>> vanliga frågor
Vad är BCD?
BCD (Binary-Coded Decimal) är en binär kodning av decimala tal där varje decimalsiffra representeras av sitt 4‑bits binära värde. Den används när decimalnoggrannhet är särskilt viktig.
Varför använda BCD i stället för ren binär?
BCD undviker avrundningsfel i decimala beräkningar och gör det enklare att visa värden direkt i decimal form. Det passar särskilt bra i finansiella applikationer där exakta decimalresultat krävs.
Vad är packad BCD?
Packad BCD lagrar två decimalsiffror i en enda byte (8 bitar), där varje nibble representerar en siffra. Det är mer utrymmeseffektivt än opackad BCD som använder en hel byte per siffra.
Vilka BCD-format finns?
Vanliga BCD-format är: 8421 (standardviktat), 2421 (självkompletterande), 5421 (bi‑kvinar), Excess‑3 (varje siffra +3) och Gray BCD (minimerar bitändringar mellan efterföljande värden).
// Snabbreferens
| 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 |
// Kodexempel
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
>> Fler frågor
F: Vad är BCD och hur skiljer det sig från binärt?
S: I BCD kodas varje decimal siffra för sig med 4 bitar. 25 blir 0010 0101, medan rent binärt ger 11001. Decimala värden förblir exakta och är lätta att visa.
F: Vad är packad och opackad BCD?
S: Packad BCD lagrar två siffror per byte (0x25 = 25). Opackad använder en byte per siffra; övre nibblen är 0 eller en zonmarkör som i EBCDIC.
F: Varför används BCD fortfarande?
S: För exakt decimal aritmetik utan avrundningsfel: finanssystem, miniräknare, realtidsklockor och 7-segmentsdisplayer. Priset: 4 bitar per siffra i stället för 3,32, cirka 20 % mer utrymme.