stringtranslate.com

Плотно упакованная десятичная дробь

Плотно упакованная десятичная система ( DPD ) — эффективный метод двоичного кодирования десятичных цифр.

Традиционная система двоичного кодирования для десятичных цифр, известная как двоично-кодированная десятичная система (BCD), использует четыре бита для кодирования каждой цифры, что приводит к значительной потере пропускной способности двоичных данных (поскольку четыре бита могут хранить 16 состояний и используются для хранения только 10), даже при использовании упакованного BCD . Плотно упакованная десятичная система является более эффективным кодом, который упаковывает три цифры в десять бит, используя схему, которая позволяет сжимать или расширять до BCD всего с двумя или тремя задержками аппаратного вентиля . [1]

Плотно упакованное десятичное кодирование является усовершенствованным вариантом кодирования Чена–Хо ; оно обеспечивает те же преимущества в сжатии и скорости, но особое расположение используемых битов дает дополнительные преимущества:

История

В 1969 году Теодор М. Герц и в 1971 году Тянь Чи Чен (陳天機) с Ирвингом Цзе Хо (何宜慈) разработали префиксные коды без потерь (именуемые кодировками Герца и Чена–Хо [2] ), которые упаковывали три десятичных цифры в десять двоичных бит, используя схему, которая позволяла сжимать или расширять до BCD всего с двумя или тремя задержками вентиля в оборудовании. Плотно упакованная десятичная система является усовершенствованием этого, разработанным Майком Ф. Коулишоу в 2002 году [1] , которое было включено в стандарты IEEE 754-2008 [3] и ISO/IEC/IEEE 60559:2011 [4] для десятичных чисел с плавающей точкой .

Кодирование

Как и кодировка Чена–Хо, кодировка DPD классифицирует каждую десятичную цифру в один из двух диапазонов в зависимости от самого значимого бита двоичной формы: «маленькие» цифры имеют значения от 0 до 7 (двоичные 0000–0111), а «большие» цифры — от 8 до 9 (двоичные 1000–1001). Как только становится известно или указывается, что цифра мала, для указания значения по-прежнему требуются еще три бита. Если указано большое значение, требуется только один бит для различения значений 8 или 9.

При кодировании наиболее значимые биты каждой из трех цифр, которые должны быть закодированы, определяют один из восьми шаблонов кодирования для оставшихся битов, согласно следующей таблице. Таблица показывает, как при декодировании десять бит закодированной формы в столбцах b9 через b0 копируются в три цифры d2 через d0 , а оставшиеся биты заполняются постоянными нулями или единицами.

Биты b7, b4 и b0 ( c, fи i) проходят через кодировку без изменений и не влияют на значение других бит. Оставшиеся семь бит можно считать семибитной кодировкой для трех цифр с основанием 5.

Биты b8 и b9 не нужны и игнорируются при декодировании групп DPD с тремя большими цифрами (отмечены как «x» в последней строке таблицы выше), но заполняются нулями при кодировании.

Восемь десятичных значений, все цифры которых — 8 или 9, имеют по четыре кодировки. Биты, отмеченные x в таблице выше, игнорируются при вводе, но всегда будут 0 в вычисляемых результатах. (3 × 8 = 24 нестандартных кодировок заполняют промежуток между 10 3  = 1000 и 2 10  − 1 = 1023.)

Примеры

В этой таблице показаны некоторые репрезентативные десятичные числа и их кодировки в формате BCD, Chen–Ho и плотно упакованной десятичной системе (DPD):

Смотрите также

Ссылки

  1. ^ ab Cowlishaw, Michael Frederic (2002-08-07) [май 2002]. "Densely Packed Decimal Encoding". IEE Proceedings - Computers and Digital Techniques . 149 (3). Лондон, Великобритания: Institution of Electrical Engineers : 102–104. doi :10.1049/ip-cdt:20020407. ISSN  1350-2387. Архивировано из оригинала 20 мая 2017 г. Получено 07 февраля 2016 г.
  2. ^ Cowlishaw, Michael Frederic (2014) [июнь 2000]. "A Summary of Chen-Ho Decimal Data encoding". IBM . Архивировано из оригинала 2015-09-24 . Получено 2016-02-07 .
  3. ^ IEEE Computer Society (29.08.2008). Стандарт IEEE для арифметики с плавающей точкой. IEEE . doi :10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5753-5. IEEE Std 754-2008 . Получено 2016-02-08 .
  4. ^ ISO/IEC/IEEE 60559:2011. 2011. Архивировано из оригинала 2020-06-03 . Получено 2016-02-08 .
  5. ^ Cowlishaw, Michael Frederic (2007-02-13) [2000-10-03]. "A Summary of Densely Packed Decimal encoding". IBM . Архивировано из оригинала 2015-09-24 . Получено 2016-02-07 .

Дальнейшее чтение