BCD (engelska:binary-coded decimal, "binärkodat decimalt") ellerNBCD (engelska:natural binary-coded decimal, "naturligt kodat decimalt"), är sätt att representeratal i detdecimala talsystemet som följder av ettor och nollor. Principen är att de tal som skall kodas delas in idecimala siffror (0–9) som sedan omkodas till motsvarandebinära tal. Talet anges vanligen binärt med fyra bitar (ennibble) eller med fyra bitar i varjebyte.
Den naturligaste kodningen, 8421-kod eller natural binary-coded decimal, bygger på att bitarna i en nibble har värdena 8, 4, 2 och 1, liksom då man representerar godtyckligt data somhexadecimaltal. Bitkombinationer som ger värden över 9 används inte eller används för specialfunktioner (t.ex. för tecknet, om negativa tal skall kunna kodas). Också andra kodningar används.
Genom att arbeta med basen tio istället för två undviker man vissa avrundningsproblem, till exempel kan en tiondel inte skrivas exakt med vanliga binäraflyttal. Dessutom är det lätt för en människa att skriva och läsa. Det räcker att lära sig tio koder för siffrorna 0–9, och sedan substituerar man systematiskt siffrorna i det ursprungliga talet med motsvarande koder.
Nackdelarna är två, dels blir ett BCD-kodat tal längre än motsvarande tal i ren binärform (detta på grund av att fyra ettor eller nollor kan ge upphov till sexton kombinationer medan endast tio av dessa används som siffror), dels blir lätt själva hanteringen av i grunden decimala tal i en maskin som bygger påbinär aritmetik ineffektiv. Ineffektiviteten uppstår endast vid långa matematiska beräkningar och i normalfallet saknar det betydelse om processorn räknar i BCD-kod då övrig hantering ändå sätter körtiderna. Tiden som åtgår för att konvertera BCD-siffror till binära är ändå så pass lång att det oftast inte lönar sig att översätta. Angående lagringsutrymme så har priserna blivit så pass låga att behovet av att öka informationstätheten har krympt avsevärt.
I vanliga fall håller enbyte ett tal mellan 0 och 255 (28-1) men BCD-tal låter varje halv byte (nibble) hålla ett tiotal.Ett exempel:
53 i vanlig form ser ut som följer: 0011 0101 (32 + 16 + 4 + 1)
53 i BCD-format ser ut så här: 0101 0011 ( 4 + 1 och 2 + 1)
De flestaprocessorarkitekturer har instruktioner för att direkt hantera BCD-tal, till exempelMotorolaM68k ochx86.
| Decimalt | BCD |
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |