Articulo de referencia

Decimal densamente empaquetado

El sistema de codificación decimal densamente empaquetada ( DPD , por sus siglas en inglés) es un método eficiente para codificar dígitos decimales en binario . El sistema tradi...

El sistema de codificación decimal densamente empaquetada ( DPD , por sus siglas en inglés) es un método eficiente para codificar dígitos decimales en binario .

El sistema tradicional de codificación binaria para dígitos decimales, conocido como decimal codificado en binario (BCD), utiliza cuatro bits para codificar cada dígito, lo que resulta en un desperdicio significativo de ancho de banda de datos binarios (ya que cuatro bits pueden almacenar 16 estados y se utilizan para almacenar solo 10), incluso cuando se utiliza BCD empaquetado . El decimal densamente empaquetado es un código más eficiente que empaqueta tres dígitos en diez bits utilizando un esquema que permite la compresión desde, o la expansión a, BCD con solo dos o tres retardos de puerta de hardware . [ 1 ]

La codificación decimal densamente empaquetada es un perfeccionamiento de la codificación Chen-Ho ; ofrece las mismas ventajas de compresión y velocidad, pero la disposición particular de los bits utilizados confiere ventajas adicionales:

  • La compresión de uno o dos dígitos (en los cuatro o siete bits óptimos, respectivamente) se logra como un subconjunto de la codificación de tres dígitos. Esto significa que se puede codificar de manera eficiente cualquier cantidad de dígitos decimales (no solo múltiplos de tres). Por ejemplo, 38  =  12  ×  3  +  2 dígitos decimales se pueden codificar en 12  ×  10  +  7  =  127 bits; es decir, 12 conjuntos de tres dígitos decimales se pueden codificar usando 12 conjuntos de diez bits binarios y los dos dígitos decimales restantes se pueden codificar usando otros siete bits binarios.
  • La codificación de subconjunto mencionada anteriormente es simplemente los bits más a la derecha de la codificación estándar de tres dígitos; el valor codificado se puede ampliar simplemente añadiendo bits 0 a la izquierda.
  • Todos los números BCD de siete bits (del 0 al 79) se codifican de forma idéntica mediante DPD. Esto simplifica enormemente las conversiones de números pequeños comunes. (Esto deja de ser válido para el número 80, ya que BCD requiere ocho bits, pero la propiedad anterior exige que la codificación DPD quepa en siete bits).
  • El bit menos significativo de cada dígito se copia sin modificaciones. Por lo tanto, la parte no trivial de la codificación puede considerarse una conversión de tres dígitos en base 5 a siete bits binarios. Además, los valores lógicos de cada dígito (donde cada dígito es 0 o  1) pueden manipularse directamente sin necesidad de codificación ni decodificación.

Historia

En 1969, Theodore M. Hertz, y en 1971, Tien Chi Chen (陳天機) con Irving Tze Ho (何宜慈) idearon códigos de prefijo sin pérdida (conocidos como codificaciones de Hertz y Chen-Ho [ 2 ] ) que empaquetaban tres dígitos decimales en diez bits binarios usando un esquema que permitía la compresión desde o expansión a BCD con solo dos o tres retardos de puerta en el hardware. El decimal densamente empaquetado es un refinamiento de esto, ideado por Mike F. Cowlishaw en 2002, [ 1 ] que se incorporó a los estándares IEEE 754-2008 [ 3 ] e ISO/IEC/IEEE 60559:2011 [ 4 ] para punto flotante decimal .

Codificación

Al igual que la codificación Chen-Ho, la codificación DPD clasifica cada dígito decimal en uno de dos rangos, según el bit más significativo de la representación binaria: los dígitos "pequeños" tienen valores del 0 al 7 (binario 0000–0111), y los dígitos "grandes", del 8 al 9 (binario 1000–1001). Una vez que se sabe o se ha indicado que un dígito es pequeño, se requieren tres bits adicionales para especificar su valor. Si se ha indicado un valor grande, solo se requiere un bit para distinguir entre los valores 8 y 9.

Al codificar, los bits más significativos de cada uno de los tres dígitos a codificar determinan uno de los ocho patrones de codificación para los bits restantes, según la siguiente tabla. La tabla muestra cómo, al decodificar, los diez bits de la forma codificada en las columnas b9 a b0 se copian en los tres dígitos d2 a d0 , y los bits restantes se rellenan con ceros o unos constantes.

Los bits b7, b4 y b0 ( c, fy i) se transmiten sin cambios durante la codificación y no afectan el significado de los demás bits. Los siete bits restantes pueden considerarse una codificación de siete bits para tres dígitos en base 5.

Los bits b8 y b9 no son necesarios y se ignoran al decodificar grupos DPD con tres dígitos grandes (marcados como "x" en la última fila de la tabla anterior), pero se rellenan con ceros al codificar.

Los ocho valores decimales cuyos dígitos son todos 8 o 9 tienen cuatro codificaciones cada uno. Los bits marcados con una "x" en la tabla anterior se ignoran en la entrada, pero siempre serán 0 en los resultados calculados. (Las 3  ×  8  =  24 codificaciones no estándar cubren el intervalo entre 10³ =  1000  y 2¹⁰  =  1024).

Ejemplos

Esta tabla muestra algunos números decimales representativos y sus codificaciones en BCD, Chen-Ho y decimal densamente empaquetado (DPD):

Véase también

Referencias

  1. 1 2 Cowlishaw, Michael Frederic (2002-08-07) [Mayo 2002]. "Codificación decimal densamente empaquetada" . IEE Proceedings - Computers and Digital Techniques . 149 (3). Londres, Reino Unido: Institution of Electrical Engineers : 102–104 . doi : 10.1049/ip-cdt:20020407 (inactivo 2025-07-11). ISSN 1350-2387 . Archivado del original el 2017-05-20 . Recuperado el 2016-02-07 . {{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  2. Cowlishaw, Michael Frederic (2014) [junio de 2000]. "Un resumen de la codificación de datos decimales de Chen-Ho" . IBM . Archivado del original el 24 de septiembre de 2015. Recuperado el 7 de febrero de 2016 .
  3. IEEE Computer Society (29 de agosto de 2008). Norma IEEE para aritmética de punto flotante . IEEE . doi : 10.1109/IEEESTD.2008.4610935 . ISBN 978-0-7381-5753-5Norma IEEE 754-2008.
  4. ISO/IEC/IEEE 60559:2011 . 2011. Archivado del original el 3 de junio de 2020. Consultado el 8 de febrero de 2016 .
  5. Cowlishaw, Michael Frederic (13 de febrero de 2007) [3 de octubre de 2000]. "Resumen de la codificación decimal densamente empaquetada" . IBM . Archivado del original el 24 de septiembre de 2015. Consultado el 7 de febrero de 2016 .

Lecturas adicionales

  • Cowlishaw, Michael Frederic (25/02/2003) [20/05/2002, 27/01/2001]. Escrito en Coventry, Reino Unido. «Codificador/decodificador decimal a binario» (Patente estadounidense). Armonk, Nueva York, EE. UU.: International Business Machines Corporation (IBM). US6525679B1 . Consultado el 18/07/2018.y Cowlishaw, Michael Frederic (07-11-2007) [14-01-2004, 14-08-2002, 24-09-2001, 27-01-2001]. Escrito en Winchester, Hampshire, Reino Unido. «Codificador/decodificador decimal a binario» (Patente europea). Armonk, Nueva York, EE. UU.: International Business Machines Corporation (IBM). EP1231716A2 . Recuperado el 18-07-2018 .(Nota: Esta patente trata sobre DPD.)
  • Bonten, Jo HM (06-10-2009) [05-10-2006]. "Codificación decimal empaquetada IEEE-754-2008" . Geldrop, Países Bajos. Archivado del original el 11-07-2018 . Recuperado el 11-07-2018 .(Nota: Puede encontrar una versión anterior aquí: Codificación decimal empaquetada IEEE-754r ).
  • Savard, John JG (2018) [2007]. "Codificación Chen-Ho y decimal densamente empaquetado" . quadibloc . Archivado del original el 3 de julio de 2018. Recuperado el 16 de julio de 2018 .