> bcd | десятичный | двоичный <
// BCD — двоично‑десятичный код для точной десятичной арифметики
Десятичная точность
Сохраняет точность десятичных значений и избегает ошибок округления при двоичном представлении.
Кодирование по полубайтам
Каждая десятичная цифра кодируется ровно 4 битами (одним полубайтом).
Несколько форматов
Поддерживаются форматы BCD 8421, 2421, 5421, Excess-3 и Gray BCD.
>> техническая информация
Как работает BCD:
BCD кодирует каждую десятичную цифру (0–9) в 4 двоичных бита. Различные форматы BCD используют разные весовые коэффициенты битов: 8421 (стандартный), 2421 (самодополняющийся), 5421 (би‑квинарный), Excess‑3 (к каждому разряду прибавляется 3) и Gray BCD (минимизирует изменения битов). Упакованный BCD хранит две цифры в одном байте для большей эффективности.
Пример форматов BCD:
Десятичное: 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
Упакованный: 10010101 00110000
(95) (30)
Зачем использовать BCD:
- >Финансовые вычисления, требующие точного десятичного представления
- >Цифровые индикаторы и декодеры семисегментных индикаторов
- >Схемы часов реального времени
- >Калькуляторы и вычислительные микросхемы
- >ПЛК и промышленные системы управления
>> часто задаваемые вопросы
Что такое BCD?
BCD (Binary-Coded Decimal) — это двоичное кодирование десятичных чисел, при котором каждая десятичная цифра представляется своим двоичным эквивалентом из 4 бит. Используется там, где важна точная десятичная арифметика.
Почему использовать BCD вместо чисто двоичного формата?
BCD помогает избежать ошибок округления при десятичных вычислениях и упрощает вывод значений на десятичные индикаторы. Это особенно полезно в финансовых приложениях, где необходимы точные десятичные результаты.
Что такое упакованный BCD?
Упакованный BCD хранит две десятичные цифры в одном байте (8 бит), где каждый полубайт представляет одну цифру. Это эффективнее по памяти, чем неупакованный BCD, где для каждой цифры используется целый байт.
Какие существуют форматы BCD?
К распространённым форматам BCD относятся: 8421 (стандартный взвешенный), 2421 (самодополняющийся), 5421 (би‑квинарный), Excess‑3 (каждая цифра +3) и Gray BCD (минимизирует изменения битов между соседними значениями).
// Краткий справочник
| 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 |
// Примеры кода
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
>> Другие вопросы
В: Что такое BCD и чем оно отличается от двоичного кода?
О: В BCD каждая десятичная цифра кодируется отдельно 4 битами. Число 25 превращается в 0010 0101, а обычное двоичное — 11001. Десятичные значения остаются точными и легко выводятся на дисплей.
В: Что такое упакованный и неупакованный BCD?
О: Упакованный BCD хранит две цифры в байте (0x25 = 25). Неупакованный использует байт на цифру; старшая тетрада равна 0 или зоне, как в EBCDIC.
В: Зачем BCD используют до сих пор?
О: Для точной десятичной арифметики без ошибок округления: финансовые системы, калькуляторы, часы реального времени и 7-сегментные индикаторы. Цена — 4 бита на цифру вместо 3,32, то есть примерно на 20 % больше памяти.