
En informática y sistemas electrónicos , el código binario decimal ( BCD ) es una clase de codificación binaria de números decimales donde cada dígito se representa mediante un número fijo de bits , generalmente cuatro u ocho. En ocasiones, se utilizan patrones de bits especiales para indicar un signo u otras señales (por ejemplo, error o desbordamiento).
En los sistemas orientados a bytes (es decir, la mayoría de las computadoras modernas), el término BCD desempaquetado [ 1 ] generalmente implica un byte completo para cada dígito (a menudo incluyendo un signo), mientras que el BCD empaquetado normalmente codifica dos dígitos dentro de un solo byte aprovechando el hecho de que cuatro bits son suficientes para representar el rango de 0 a 9. Sin embargo, la codificación precisa de cuatro bits puede variar por razones técnicas (por ejemplo, exceso de 3 ).
Los diez estados que representan un dígito BCD a veces se denominan tétradas [ 2 ] [ 3 ] (el nibble que normalmente se necesita para contenerlas también se conoce como tétrada), mientras que los estados no utilizados, que no importan, se denominan pseudotétradas [ de ] , [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] pseudodecimales , [ 3 ] o dígitos pseudodecimales . [ 9 ] [ 10 ] [ nb 1 ]
La principal ventaja del BCD, en comparación con los sistemas binarios posicionales , reside en su representación y redondeo más precisos de cantidades decimales, así como en la facilidad de conversión a representaciones convencionales legibles por humanos. Sus principales inconvenientes son un ligero aumento en la complejidad de los circuitos necesarios para implementar la aritmética básica y una capacidad de almacenamiento ligeramente menor.
El sistema BCD se utilizó en muchos de los primeros ordenadores decimales y está implementado en el conjunto de instrucciones de máquinas como la serie IBM System/360 y sus descendientes, el VAX de Digital Equipment Corporation , el Burroughs B1700 y los procesadores de la serie Motorola 68000 .
BCD en sí mismo no se usa tan ampliamente como antes, y no está disponible o es limitado en conjuntos de instrucciones más recientes (por ejemplo, ARM ; x86 en modo largo ). Sin embargo, los formatos decimales de punto fijo y de punto flotante siguen siendo importantes y se siguen utilizando en la informática financiera, comercial e industrial, donde no se pueden tolerar los sutiles errores de conversión y redondeo fraccionario inherentes a los formatos binarios de punto flotante. [ 11 ]
Fondo
BCD aprovecha el hecho de que cualquier número decimal puede representarse mediante un patrón de cuatro bits. Una forma obvia de codificar dígitos es BCD natural (NBCD), donde cada dígito decimal se representa mediante su valor binario de cuatro bits correspondiente, como se muestra en la siguiente tabla. Esto también se conoce como codificación "8421".
Este esquema también puede denominarse Decimal Codificado en Binario Simple ( SBCD ) o BCD 8421 , y es la codificación más común. [ 12 ] Otras incluyen la llamada codificación "4221" y "7421" – nombradas por la ponderación utilizada para los bits – y " exceso-3 ". [ 13 ] Por ejemplo, el dígito BCD 6, 0110'ben notación 8421, es 1100'ben 4221 (son posibles dos codificaciones), 0110'ben 7421, mientras que en exceso-3 es 1001'b( 6 + 3 = 9 ).
La siguiente tabla representa los dígitos decimales del 0 al 9 en diversos sistemas de codificación BCD. En los encabezados, el símbolo " indica el valor de cada bit. En la quinta columna ("BCD 8 4 −2 −1"), dos de los valores son negativos. También se muestran los códigos de caracteres ASCII y EBCDIC para los dígitos, que son ejemplos de BCD zonificado.8421
Como la mayoría de las computadoras trabajan con datos en bytes de 8 bits , es posible utilizar uno de los siguientes métodos para codificar un número BCD:
- Desempaquetado : Cada dígito decimal se codifica en un byte, donde cuatro bits representan el número y los bits restantes no tienen ningún significado.
- Empaquetado : Dos dígitos decimales se codifican en un solo byte, con un dígito en el nibble menos significativo ( bits 0 a 3 ) y el otro dígito en el nibble más significativo (bits 4 a 7). [ nb 8 ]
Como ejemplo, codificar el número decimal 91utilizando BCD desempaquetado da como resultado el siguiente patrón binario de dos bytes:
Decimal: 9 1 Binario: 0000 1001 0000 0001
En BCD empaquetado, el mismo número cabría en un solo byte:
Decimal: 9 1 Binario: 1001 0001
Por lo tanto, el rango numérico para un byte BCD desempaquetado es de cero a nueve inclusive, mientras que el rango para un byte BCD empaquetado es de cero a noventa y nueve inclusive.
Para representar números mayores que el rango de un solo byte, se puede utilizar cualquier número de bytes contiguos. Por ejemplo, para representar el número decimal 12345en BCD empaquetado, utilizando el formato big-endian , un programa lo codificaría de la siguiente manera:
Decimal: 0 1 2 3 4 5 Binario: 0000 0001 0010 0011 0100 0101
Aquí, el nibble más significativo del byte más significativo se ha codificado como cero, por lo que el número se almacena como 012345(pero las rutinas de formato podrían reemplazar o eliminar los ceros iniciales). El BCD empaquetado es más eficiente en el uso del almacenamiento que el BCD desempaquetado; codificar el mismo número (con el cero inicial) en formato desempaquetado consumiría el doble de almacenamiento.
Las operaciones de desplazamiento y enmascaramiento se utilizan para empaquetar o desempaquetar un dígito BCD empaquetado. Otras operaciones bit a bit se utilizan para convertir un número a su patrón de bits equivalente o para revertir el proceso.
BCD empaquetado
Algunos ordenadores cuyas palabras son múltiplos de un octeto (byte de 8 bits), por ejemplo, los sistemas mainframe IBM contemporáneos, admiten representaciones numéricas BCD empaquetadas (o decimal empaquetado [ 38 ] ), en las que cada nibble representa un dígito decimal o un signo. [ nb 8 ] El BCD empaquetado se utiliza al menos desde la década de 1960 y está implementado en todo el hardware mainframe de IBM desde entonces. La mayoría de las implementaciones son big-endian , es decir, con el dígito más significativo en la mitad superior de cada byte, y con el byte más a la izquierda (ubicado en la dirección de memoria más baja) que contiene los dígitos más significativos del valor decimal empaquetado. El nibble inferior del byte más a la derecha se suele utilizar como indicador de signo, aunque algunas representaciones sin signo carecen de un indicador de signo.
Por ejemplo, un valor de 4 bytes consta de 8 nibbles, donde los 7 nibbles superiores almacenan los dígitos de un valor decimal de 7 dígitos, y el nibble inferior indica el signo del valor entero decimal. Los valores de signo estándar son 1100 ( C hexadecimal ) para positivo (+) y 1101 (D) para negativo (−). Esta convención proviene del campo de zona para caracteres EBCDIC y la representación de sobreimpresión con signo .
Otros signos permitidos son 1010 (A) y 1110 (E) para positivo y 1011 (B) para negativo. Los procesadores IBM System/360 usarán los signos 1010 (A) y 1011 (B) si el bit A está establecido en el PSW, para el estándar ASCII-8 que nunca se aprobó. La mayoría de las implementaciones también proporcionan valores BCD sin signo con un nibble de signo de 1111 (F). [ 39 ] [ 40 ] [ 41 ] ILE RPG usa 1111 (F) para positivo y 1101 (D) para negativo. [ 42 ] Estos coinciden con la zona EBCDIC para dígitos sin sobreimpresión de signo. En el sistema BCD empaquetado, el número 127 se representa mediante 0001 0010 0111 1100 (127C) y −127 mediante 0001 0010 0111 1101 (127D). Los sistemas Burroughs utilizaban 1101 (D) para los valores negativos, y cualquier otro valor se consideraba positivo (los procesadores normalizaban los valores positivos a 1100 (C)).
Sin importar el tamaño de una palabra , siempre hay un número par de nibbles , ya que cada byte tiene dos. Por lo tanto, una palabra de n bytes puede contener hasta 2n − 1 dígitos decimales, que siempre es un número impar de dígitos. Un número decimal con d dígitos requiere 1/2 ( d + 1) bytes de espacio de almacenamiento .
Por ejemplo, una palabra de 4 bytes (32 bits) puede contener siete dígitos decimales más un signo y puede representar valores que van desde ±9.999.999. Por lo tanto, el número −1.234.567 tiene 7 dígitos y se codifica como:
0001 0010 0011 0100 0101 0110 0111 1101 1 2 3 4 5 6 7 −
Al igual que las cadenas de caracteres, el primer byte del número decimal empaquetado ( el que contiene los dos dígitos más significativos ) suele almacenarse en la dirección más baja de la memoria, independientemente del orden de bytes de la máquina.
En cambio, un entero binario de complemento a dos de 4 bytes puede representar valores desde −2.147.483.648 hasta +2.147.483.647.
Si bien el BCD empaquetado no aprovecha al máximo el almacenamiento (utiliza aproximadamente un 20 % más de memoria que la notación binaria para almacenar los mismos números), la conversión a ASCII , EBCDIC o las diversas codificaciones de Unicode resulta trivial, ya que no requiere operaciones aritméticas. Los requisitos adicionales de almacenamiento suelen compensarse con la necesidad de precisión y compatibilidad con calculadoras o cálculos manuales que proporciona la aritmética decimal de punto fijo. Existen empaquetamientos más densos de BCD que evitan la penalización de almacenamiento y tampoco requieren operaciones aritméticas para las conversiones comunes.
El formato BCD empaquetado es compatible con el lenguaje de programación COBOL como el tipo de datos "COMPUTATIONAL-3" (una extensión de IBM adoptada por muchos otros proveedores de compiladores) o "PACKED-DECIMAL" (parte del estándar COBOL de 1985). En PL/I, es compatible como "FIXED DECIMAL". Además del IBM System/360 y los mainframes compatibles posteriores, el formato BCD empaquetado está implementado en el conjunto de instrucciones nativo de los procesadores VAX originales de Digital Equipment Corporation y algunos modelos de los mainframes de la serie SDS Sigma , y es el formato nativo para la línea de mainframes Burroughs Medium Systems (descendientes de la serie Electrodata 200 de la década de 1950 ).
Las representaciones en complemento a diez para números negativos ofrecen un enfoque alternativo para codificar el signo de los números BCD (tanto empaquetados como de otro tipo). En este caso, los números positivos siempre tienen un dígito más significativo entre 0 y 4 (inclusive), mientras que los números negativos se representan mediante el complemento a diez del número positivo correspondiente.
Como resultado, este sistema permite que los números BCD empaquetados de 32 bits varíen desde-50 000 000 a+49 999 999 y −1 se representa como 99999999. (Al igual que con los números binarios en complemento a dos, el rango no es simétrico con respecto a cero).
Decimal empaquetado de punto fijo
Algunos lenguajes de programación (como COBOL y PL/I) admiten números decimales de punto fijo . Estos lenguajes permiten al programador especificar un punto decimal implícito delante de uno de los dígitos.
Por ejemplo, un valor decimal empaquetado codificado con los bytes 12 34 56 7C representa el valor de punto fijo.+1 234 .567 cuando el punto decimal implícito se encuentra entre el cuarto y el quinto dígito:
12 34 56 7C 12 34.56 7+
El punto decimal no se almacena en memoria, ya que el formato de almacenamiento BCD empaquetado no lo permite. Su ubicación es simplemente conocida por el compilador, y el código generado actúa en consecuencia para las distintas operaciones aritméticas.
Codificaciones de mayor densidad
Si un dígito decimal requiere cuatro bits, entonces tres dígitos decimales requieren 12 bits. Sin embargo, dado que 2¹⁰ ( 1024) es mayor que 10³ ( 1000), si se codifican tres dígitos decimales juntos, solo se necesitan 10 bits. Dos ejemplos de estas codificaciones son la codificación Chen-Ho y el decimal densamente empaquetado (DPD). Este último tiene la ventaja de que subconjuntos de la codificación codifican dos dígitos en los siete bits óptimos y un dígito en cuatro bits, como en el BCD estándar.
Decimal zonificado
Algunas implementaciones, por ejemplo los sistemas mainframe de IBM , admiten representaciones numéricas decimales por zonas . Cada dígito decimal se almacena en un byte de 8 bits [ nb 9 ] , donde los cuatro bits inferiores codifican el dígito en formato BCD. Los cuatro bits superiores [ nb 10 ] , denominados bits de "zona", suelen tener un valor fijo, de modo que el byte contiene un valor de carácter correspondiente al dígito, o valores que representan más o menos. Los sistemas EBCDIC [ nb 11 ] utilizan un valor de zona de 1111 2 ( F 16 ), que produce F0 16 – F9 16 , los códigos para "0" a "9", un valor de zona de 1100 2 ( C 16 ) para positivo, que produce C0 16 – C9 16 , los códigos para "{" a "I" y un valor de zona de 1110 2 ( D 16 ) para negativo, que produce D0 16 – D9 16 , los códigos para los caracteres "}" a "R". De manera similar, los sistemas ASCII utilizan un valor de zona de 0011 (hex 3), que da códigos de caracteres del 30 al 39 (hex).
Para valores decimales zonificados con signo, el nibble de zona más a la derecha (menos significativo) contiene el dígito de signo, que es el mismo conjunto de valores que se utilizan para números decimales empaquetados con signo (véase más arriba). Por lo tanto, un valor decimal zonificado codificado como los bytes hexadecimales F1 F2 D3 representa el valor decimal con signo −123:
F1 F2 D3 1 2 −3
Tabla de conversión decimal por zonas EBCDIC
(*) Nota: Estos caracteres varían según la configuración de la página de códigos de caracteres local .
Decimal zonificado de punto fijo
Algunos lenguajes (como COBOL y PL/I) admiten directamente valores decimales con zona de punto fijo, asignando un punto decimal implícito en alguna ubicación entre los dígitos decimales de un número.
Por ejemplo, dado un valor decimal con signo de seis bytes con un punto decimal implícito a la derecha del cuarto dígito, los bytes hexadecimales F1 F2 F7 F9 F5 C0 representan el valor +1279,50:
F1 F2 F7 F9 F5 C0 1 2 7 9. 5 +0
Operaciones con BCD
Suma
Es posible realizar una suma sumando primero en binario y luego convirtiendo a BCD. La conversión de la suma simple de dos dígitos se puede hacer sumando 6 (es decir, 16 − 10) cuando el resultado de cinco bits de la suma de un par de dígitos tiene un valor mayor que 9. La razón para sumar 6 es que hay 16 posibles valores BCD de 4 bits (ya que 2⁴ = 16), pero solo 10 valores son válidos (del 0000 al 1001). Por ejemplo:
1001 + 1000 = 10001 9 + 8 = 17
10001 es la representación binaria, no decimal, del resultado deseado, pero el 1 más significativo (el "acarreo") no cabe en un número binario de 4 bits. Tanto en BCD como en decimal, no puede existir un valor mayor que 9 (1001) por dígito. Para corregir esto, se suma 6 (0110) al total y, a continuación, el resultado se trata como dos nibbles.
10001 + 0110 = 00010111 => 0001 0111 17 + 6 = 23 1 7
Los dos dígitos del resultado, 0001 y 0111, corresponden a los dígitos "1" y "7". Esto da como resultado "17" en BCD, que es el resultado correcto.
Esta técnica se puede extender a la suma de múltiples dígitos mediante la suma en grupos de derecha a izquierda, propagando el segundo dígito como acarreo y comparando siempre el resultado de 5 bits de la suma de cada par de dígitos con 9. Algunas CPU proporcionan un indicador de medio acarreo para facilitar los ajustes aritméticos BCD tras las operaciones de suma y resta binarias. El Intel 8080 , el Zilog Z80 y las CPU de la familia x86 proporcionan el código de operación DAA (Acumulador de ajuste decimal en 8080 y Z80 / Ajuste decimal para suma en x86).
Sustracción
La resta se realiza sumando el complemento a diez del sustraendo al minuendo . Para representar el signo de un número en BCD, se usa el número 0000 para representar un número positivo y el 1001 para representar un número negativo . Las 14 combinaciones restantes son signos inválidos. Para ilustrar la resta BCD con signo, considere el siguiente problema: 357 − 432.
En BCD con signo, 357 es 0000 0011 0101 0111. El complemento a la decena de 432 se obtiene tomando el complemento a la nueve de 432 y sumándole uno. Así, 999 − 432 = 567, y 567 + 1 = 568. Al anteponer el signo negativo a 568 en BCD, se puede representar el número −432. Por lo tanto, −432 en BCD con signo es 1001 0101 0110 1000.
Ahora que ambos números están representados en BCD con signo, se pueden sumar:
0000 0011 0101 0111 0 3 5 7 + 1001 0101 0110 1000 9 5 6 8 = 1001 1000 1011 1111 9 8 11 15
Dado que BCD es una forma de representación decimal, varias de las sumas de dígitos anteriores no son válidas. En caso de que exista una entrada no válida (cualquier dígito BCD mayor que 1001), se suma 6 para generar un bit de acarreo y hacer que la suma se convierta en una entrada válida. Por lo tanto, al sumar 6 a las entradas no válidas se obtiene lo siguiente:
1001 1000 1011 1111 9 8 11 15 + 0000 0000 0110 0110 0 0 6 6 = 1001 1001 0001 0101 9 9 1 5
Por lo tanto, el resultado de la resta es 1001 1001 0010 0101 (−925). Para confirmar el resultado, observe que el primer dígito es 9, lo que significa negativo. Esto parece ser correcto ya que 357 − 432 debería dar como resultado un número negativo. Los nibbles restantes son BCD, por lo que 1001 0010 0101 es 925. El complemento a la decena de 925 es 1000 − 925 = 75, por lo que la respuesta calculada es −75.
Si se suman diferentes cantidades de nibbles (por ejemplo, 1053 − 2), primero se debe anteponer cero al número con menos dígitos antes de calcular el complemento a diez o realizar la resta. Así, en el caso de 1053 − 2, primero habría que representar 2 como 0002 en BCD, y luego calcular el complemento a diez de 0002.
BCD en informática
IBM
IBM utilizó el término Código de Intercambio Decimal Codificado en Binario (BCDIC, a veces simplemente llamado BCD) para referirse a códigos alfanuméricos de 6 bits que representaban números, letras mayúsculas y caracteres especiales. Alguna variante de los códigos alfanuméricos BCDIC se utiliza en la mayoría de los primeros ordenadores IBM, incluidos el IBM 1620 (presentado en 1959), la serie IBM 1400 y los miembros de arquitectura no decimal de la serie IBM 700/7000 .
Las máquinas de la serie IBM 1400 son direccionables por caracteres, donde cada ubicación consta de seis bits etiquetados como B, A, 8, 4, 2 y 1, más un bit de verificación de paridad impar ( C ) y un bit de marca de palabra ( M ). Para codificar los dígitos del 1 al 9 , B y A son cero y el valor del dígito se representa mediante BCD estándar de 4 bits en los bits 8 al 1. Para la mayoría de los demás caracteres, los bits B y A se derivan simplemente de las perforaciones de "zona 12", "11" y "0" en el código de caracteres de la tarjeta perforada , y los bits 8 al 1 de las perforaciones del 1 al 9. Una perforación de "zona 12" establece tanto B como A , una de "zona 11" establece B , y una de "zona 0" (una perforación 0 combinada con cualquier otra) establece A. Por lo tanto, la letra A , que es (12,1) en el formato de tarjeta perforada, se codifica como (B,A,1) . El símbolo monetario $ , (11,8,3) en la tarjeta perforada, se codificó en la memoria como (B,8,2,1) . Esto permite que el circuito de conversión entre el formato de tarjeta perforada y el formato de almacenamiento interno sea muy sencillo, con solo algunos casos especiales. Un caso especial importante es el dígito 0 , representado por un único 0 perforado en la tarjeta, y (8,2) en la memoria principal. [ 43 ]
La memoria del IBM 1620 está organizada en dígitos direccionables de 6 bits: los habituales 8 , 4 , 2 , 1 , más F (utilizado como bit de bandera) y C (bit de comprobación de paridad impar). Los caracteres alfanuméricos BCD se codifican mediante pares de dígitos, con la "zona" en el dígito par y el "dígito" en el dígito impar. La "zona" se relaciona con las marcas de "zona" 12 , 11 y 0 , como en la serie 1400. El hardware de traducción de entrada/salida convertía los pares de dígitos internos con los códigos BCD estándar externos de 6 bits.
En la arquitectura decimal de los procesadores IBM 7070 , IBM 7072 e IBM 7074 , los caracteres alfanuméricos se codifican mediante pares de dígitos (utilizando el código dos de cinco en los dígitos, no BCD) de la palabra de 10 dígitos, con la "zona" en el dígito izquierdo y el "dígito" en el dígito derecho. El hardware de traducción de entrada/salida realizaba la conversión entre los pares de dígitos internos y los códigos BCD estándar externos de 6 bits.
Con la introducción del System/360 , IBM amplió los caracteres alfanuméricos BCD de 6 bits a EBCDIC de 8 bits, lo que permitió añadir muchos más caracteres (por ejemplo, letras minúsculas). También se implementó un tipo de datos numéricos BCD empaquetados de longitud variable , que proporciona instrucciones de máquina para realizar operaciones aritméticas directamente sobre datos decimales empaquetados.
En los sistemas IBM 1130 y 1800 , el BCD empaquetado es compatible con el software IBM's Commercial Subroutine Package.
Actualmente, los datos BCD siguen utilizándose ampliamente en bases de datos de IBM, como IBM Db2 , y en procesadores como z/Architecture , POWER6 y los procesadores Power ISA posteriores . En estos productos, el BCD suele ser BCD zonificado (como en EBCDIC o ASCII), BCD empaquetado (dos dígitos decimales por byte) o codificación BCD "pura" (un dígito decimal almacenado como BCD en los cuatro bits menos significativos de cada byte). Todos estos formatos se utilizan en registros de hardware, unidades de procesamiento y software.
Otros ordenadores
La serie VAX de Digital Equipment Corporation incluye instrucciones que permiten realizar operaciones aritméticas directamente sobre datos BCD empaquetados y convertir entre datos BCD empaquetados y otras representaciones de enteros. [ 41 ] El formato BCD empaquetado de VAX es compatible con el de IBM System/360 y los procesadores compatibles posteriores de IBM. Las implementaciones de MicroVAX y VAX posteriores eliminaron esta capacidad de la CPU, pero mantuvieron la compatibilidad del código con máquinas anteriores mediante la implementación de las instrucciones faltantes en una biblioteca de software proporcionada por el sistema operativo. Esta se invoca automáticamente mediante el manejo de excepciones cuando se encuentran las instrucciones obsoletas, de modo que los programas que las utilizan pueden ejecutarse sin modificaciones en las máquinas más recientes.
Muchos procesadores tienen soporte de hardware para aritmética de enteros codificados en BCD. Por ejemplo, el 6502 , [ 44 ] [ 45 ] la serie Motorola 68000 , [ 46 ] y la serie x86 . [ 47 ] La arquitectura Intel x86 admite un formato BCD único de 18 dígitos (diez bytes) que se puede cargar y almacenar desde los registros de punto flotante, desde donde se pueden realizar cálculos. [ 48 ]
En los ordenadores más recientes, estas capacidades casi siempre se implementan mediante software en lugar de en el conjunto de instrucciones de la CPU, pero los datos numéricos BCD siguen siendo extremadamente comunes en aplicaciones comerciales y financieras.
Existen trucos para implementar operaciones de suma o resta de BCD empaquetado y decimal zonal utilizando secuencias cortas pero difíciles de entender de lógica paralela de palabras y operaciones aritméticas binarias. [ 49 ] Por ejemplo, el siguiente código (escrito en C ) calcula una suma de BCD empaquetado sin signo de 8 dígitos utilizando operaciones binarias de 32 bits:
uint32_t BCDadd ( uint32_t a , uint32_t b ) { uint32_t t1 , t2 ; // valores intermedios sin signo de 32 bitst1 = a + 0x06666666 ; t2 = t1 ^ b ; // suma sin propagación de acarreo t1 = t1 + b ; // suma provisional t2 = t1 ^ t2 ; // todos los bits de acarreo binarios t2 = ~ t2 & 0x11111110 ; // solo los bits de acarreo BCD t2 = ( t2 >> 2 ) | ( t2 >> 3 ); // corrección return t1 - t2 ; // suma BCD corregida }BCD en electrónica
El BCD es común en sistemas electrónicos donde se muestra un valor numérico, especialmente en sistemas compuestos únicamente de lógica digital y que no contienen un microprocesador. Al emplear BCD, la manipulación de datos numéricos para su visualización se simplifica enormemente al tratar cada dígito como un subcircuito independiente.
Esto se ajusta mucho mejor a la realidad física del hardware de visualización: un diseñador podría, por ejemplo, usar una serie de pantallas de siete segmentos idénticas para construir un circuito de medición. Si la cantidad numérica se almacenara y manipulara en binario puro, la interfaz con dicha pantalla requeriría circuitos complejos. Por lo tanto, en los casos en que los cálculos son relativamente sencillos, trabajar directamente con BCD puede resultar en un sistema general más simple que la conversión a y desde binario. La mayoría de las calculadoras de bolsillo realizan todos sus cálculos en BCD.
El mismo argumento se aplica cuando este tipo de hardware utiliza un microcontrolador integrado u otro procesador pequeño. A menudo, representar números internamente en formato BCD resulta en un código más pequeño, ya que la conversión desde o hacia la representación binaria puede ser costosa en procesadores tan limitados. Para estas aplicaciones, algunos procesadores pequeños cuentan con modos aritméticos dedicados, que facilitan la escritura de rutinas que manipulan cantidades BCD. [ 50 ] [ 51 ]
Comparación con el sistema binario puro
Ventajas
- Escalar por una potencia de 10 es sencillo.
- El redondeo en el límite de los dígitos decimales es más sencillo. La suma y la resta en decimales no requieren redondeo.
- La alineación de dos números decimales (por ejemplo, 1,3 + 27,08) es un simple desplazamiento exacto.
- La conversión a un formato de caracteres o para su visualización (por ejemplo, a un formato basado en texto como XML , o para controlar señales para una pantalla de siete segmentos ) es una simple asignación dígito por dígito, y puede realizarse en tiempo lineal ( O ( n )). La conversión desde binario puro implica una lógica relativamente compleja que abarca dígitos, y para números grandes, no se conoce ningún algoritmo de conversión en tiempo lineal (véase Número binario § Conversión a y desde otros sistemas numéricos ).
- Muchos valores no enteros, como el decimal 0.2, tienen una representación posicional infinita en binario (0.001100110011...), pero una representación posicional finita en decimal codificado en binario (0.0010). Por consiguiente, un sistema basado en representaciones decimales codificadas en binario de fracciones decimales evita errores al representar y calcular dichos valores. Esto resulta útil en cálculos financieros.
Desventajas
- Las implementaciones prácticas existentes de BCD suelen ser más lentas que las operaciones en representaciones binarias, especialmente en sistemas embebidos, debido al soporte limitado del procesador para las operaciones BCD nativas. [ 52 ]
- Algunas operaciones son más complejas de implementar. Los sumadores requieren lógica adicional para que se produzca un desbordamiento y generen un acarreo anticipado. Además, se necesita entre un 15 % y un 20 % más de circuitos para la suma BCD en comparación con la suma binaria pura. La multiplicación requiere el uso de algoritmos algo más complejos que la suma con máscara de desplazamiento (se requiere una multiplicación binaria , que implica desplazamientos y sumas binarias o su equivalente, por dígito o grupo de dígitos).
- El BCD estándar requiere cuatro bits por dígito, lo que supone aproximadamente un 20 % más de espacio que una codificación binaria (la relación entre 4 bits y el logaritmo en base 2 de 10 bits es de 1,204). Al empaquetar los datos de forma que tres dígitos se codifiquen en diez bits, la sobrecarga de almacenamiento se reduce considerablemente, a costa de una codificación que no se ajusta a los límites de byte de 8 bits habituales en el hardware actual, lo que resulta en implementaciones más lentas en estos sistemas.
Variaciones de representación
Existen diversas implementaciones de BCD que emplean otras representaciones numéricas. Las calculadoras programables fabricadas por Texas Instruments , Hewlett-Packard y otras compañías suelen utilizar un formato BCD de punto flotante , generalmente con dos o tres dígitos para el exponente (decimal). Los bits adicionales del dígito de signo pueden usarse para indicar valores numéricos especiales, como infinito , subdesbordamiento / sobredesbordamiento y error (indicado con una pantalla parpadeante).
Variaciones firmadas
Los valores decimales con signo pueden representarse de varias maneras. El lenguaje de programación COBOL , por ejemplo, admite cinco formatos decimales con zona, cada uno de los cuales codifica el signo numérico de una forma diferente:
Telefonía en binario codificado decimal (TBCD)
3GPP desarrolló TBCD , [ 53 ] una expansión de BCD donde las combinaciones de bits restantes (no utilizadas) se utilizan para agregar símbolos de telefonía específicos, [ 54 ] [ 55 ] similares a los del diseño de teclados telefónicos .
El documento 3GPP mencionado define TBCD-STRING con nibbles intercambiados en cada byte. Los bits, octetos y dígitos se indexan desde 1, los bits desde la derecha y los dígitos y octetos desde la izquierda.
bits 8765 del octeto n codificando el dígito 2 n
bits 4321 del octeto n codificando el dígito 2( n – 1) + 1
El número que significa 1234se convertiría 21 43en TBCD.
Este formato se utiliza en la telefonía móvil moderna para enviar números marcados, así como la identificación del operador (la tupla MCC/MNC), IMEI , IMSI (SUPI), etc. [ 56 ] [ 57 ]
Codificaciones alternativas
Si los errores de representación y cálculo son más importantes que la velocidad de conversión hacia y desde la pantalla, se puede utilizar una representación binaria escalada, que almacena un número decimal como un entero codificado en binario y un exponente decimal con signo codificado en binario. Por ejemplo, 0,2 se puede representar como 2 × 10−1 .
Esta representación permite multiplicaciones y divisiones rápidas, pero puede requerir un desplazamiento de 10 durante la suma y la resta para alinear los puntos decimales. Es apropiada para aplicaciones con un número fijo de decimales que no requieren este ajuste, especialmente en aplicaciones financieras donde generalmente bastan 2 o 4 dígitos después del punto decimal. De hecho, se trata casi de una forma de aritmética de punto fijo, ya que la posición del punto decimal está implícita.
Las codificaciones de Hertz y Chen-Ho proporcionan transformaciones booleanas para convertir grupos de tres dígitos codificados en BCD a y desde valores de 10 bits [ nb 1 ] que pueden codificarse eficientemente en hardware con solo 2 o 3 retardos de puerta. El decimal densamente empaquetado (DPD) es un esquema similar [ nb 1 ] que se utiliza para la mayor parte de la mantisa , excepto el dígito principal, para una de las dos codificaciones decimales alternativas especificadas en el estándar de punto flotante IEEE 754-2008 .
Solicitud
La BIOS de muchos ordenadores personales almacena la fecha y la hora en BCD porque el chip de reloj en tiempo real MC146818 utilizado en la placa base original del IBM PC AT contaba y suministraba la hora y la fecha en BCD. Este formato se convierte fácilmente a ASCII para su visualización. [ 58 ] [ 59 ]
Los ordenadores Atari de 8 bits utilizan el formato BCD para los números de coma flotante. El procesador MOS Technology 6502 emplea el modo BCD para las instrucciones de suma y resta, en lugar de las instrucciones de ajuste BCD presentes en muchas otras MPU, incluidas las familias 8080 y x86; este "modo decimal" fue objeto de la única patente del 6502. El software suministrado por el fabricante para el ordenador portátil Psion Organiser 1 también utiliza BCD para la aritmética de coma flotante; los modelos Psion posteriores utilizan exclusivamente el formato binario.
Muchos de los primeros videojuegos, incluido el Pong original de Atari y sus numerosos imitadores, almacenan y cuentan la puntuación en BCD para facilitar su visualización mediante lógica digital discreta, sin necesidad de un procesador informático programable de ningún tipo.
Los primeros modelos de PlayStation 3 almacenaban la fecha y la hora en formato BCD. Esto provocó una interrupción global del servicio de la consola el 1 de marzo de 2010. Los dos últimos dígitos del año, almacenados en formato BCD, se interpretaron erróneamente como 16, lo que causó un error en la fecha de la unidad e inutilizó la mayoría de sus funciones. Este problema se conoce como el problema del año 2010 .
Historia jurídica
En el caso Gottschalk v. Benson de 1972 , la Corte Suprema de los Estados Unidos anuló la decisión de un tribunal inferior que había permitido una patente para convertir números codificados en BCD a binario en una computadora.
La decisión señaló que una patente "anularía por completo la fórmula matemática y, en la práctica, sería una patente sobre el algoritmo mismo". [ 60 ] Este fue un fallo histórico que determinó la patentabilidad del software y los algoritmos .
Véase también
- Decimal codificado biquinario
- Terciario codificado en binario (BCT)
- Decimal entero binario (BID)
- Máscara de bits
- Codificación de Chen-Ho
- Computadora decimal
- Decimal densamente empaquetado (DPD)
- Double dabble , un algoritmo para convertir números binarios a BCD.
- Problema del año 2000
Notas
- 1 2 3 En una representación estándar empaquetada de 4 bits, hay 16 estados (cuatro bits para cada dígito) con 10 tétradas y 6 pseudo-tétradas , mientras que en esquemas más densamente empaquetados como las codificaciones de Hertz , Chen-Ho o DPD hay menos, por ejemplo, solo 24 estados no utilizados en 1024 estados (10 bits para tres dígitos).
- 1 2 3 4 5 Los estados del código (mostrados en negro) fuera del rango decimal 0–9 indican estados adicionales de la variante no BCD del código. En la variante del código BCD que se analiza aquí, son pseudotetradas.
- ↑ El código Aiken es uno de varios códigos 2421. También se le conoce como código 2*421.
- ↑ El código Jump-at-8 también se conoce como código 2421 asimétrico.
- ↑ El código Petherick también se conoce como código del Royal Aircraft Establishment (RAE).
- ↑ El código O'Brien tipo I también se conoce como código Watts o código decimal reflejado de Watts (WRD).
- ↑ El código Gray de exceso 3 también se conoce como código Gray - Stibitz .
- 1 2 De manera similar,en las minicomputadoras a menudo se empaquetaban varios caracteres en palabras de máquina , véase IBM SQUOZE y DEC RADIX 50 .
- ↑ 6 bits para máquinas más antiguas.
- ↑ Dos para máquinas más antiguas.
- ↑ Los valores mostrados para C0 16 y D0 16 corresponden a la página de códigos 037.
Referencias
- ↑ Intel. "Manual de arquitectura ia32" (PDF) . Intel . Archivado (PDF) del original el 09/10/2022 . Recuperado el 01/07/2015 .
- ^ Klar, Rainer (1 de febrero de 1970) . "1.5.3 Konvertierung binär verschlüsselter Dezimalzahlen" [ 1.5.3 Conversión de números decimales codificados en binario ] . Digitale Rechenautomaten - Eine Einführung [ Computadoras digitales - Introducción ] . Sammlung Göschen (en alemán). vol. 1241/1241a (1 ed.). Berlín, Alemania: Walter de Gruyter & Co. / GJ Göschen'sche Verlagsbuchhandlung . págs.17 , 21. ISBN 3-11-083160-0. . N.º de archivo 7990709. Archivado del original el 18-04-2020 . Recuperado el 13-04-2020 .(205 páginas) (Nota: Una reimpresión de la primera edición de 2019 está disponible con ISBN 3-11002793-3,978-3-11002793-8También existe una cuarta edición revisada y ampliada.
- ^ Klar, Rainer (1989) [1 de octubre de 1988]. "1.4 Códigos: Binär verschlüsselte Dezimalzahlen" [ 1.4 Códigos: números decimales codificados en binario ] . Digitale Rechenautomaten – Eine Einführung in die Struktur von Computerhardware [ Computadoras digitales: una introducción a la estructura del hardware de una computadora ] . Sammlung Göschen (en alemán). vol. 2050 (cuarta edición reelaborada). Berlín, Alemania: Walter de Gruyter & Co. págs. 25, 28, 38-39 . ISBN 3-11011700-2. pag. 25:
[…] Die nicht erlaubten 0/1-Muster nennt man auch Pseudodezimalen. […]
(320 páginas) - ^ Schneider, Hans-Jochen (1986). Lexikon der Informatik und Datenverarbeitung (en alemán) (2 ed.). R. Oldenbourg Verlag München Viena. ISBN 3-486-22662-2.
- ↑ Tafel, Hans Jörg (1971). Einführung in die digitale Datenverarbeitung [ Introducción al procesamiento de información digital ] (en alemán). Múnich: Carl Hanser Verlag . ISBN 3-446-10569-7.
- ↑ Steinbuch, Karl W .; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik - Band II - Struktur und Programmierung von EDV-Systemen . Taschenbuch der Nachrichtenverarbeitung (en alemán). vol. 2 (3 ed.). Berlín, Alemania: Springer-Verlag . ISBN 3-540-06241-6. LCCN 73-80607 .
- ↑ Tietze, Ulrich; Schenk, Christoph (6 de diciembre de 2012). Circuitos electrónicos avanzados . Medios de ciencia y negocios de Springer . ISBN 978-3642812415. 9783642812415 . Consultado el 05-08-2015 .
- ↑ Kowalski, Emil (2013-03-08) [1970]. Electrónica nuclear . Springer-Verlag . doi : 10.1007/978-3-642-87663-9 . ISBN 978-3642876639. 9783642876639, 978-3-642-87664-6 . Consultado el 5 de agosto de 2015 .
- ^ Ferretti, Vittorio (13 de marzo de 2013). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Diccionario de electrónica, informática y telecomunicaciones: Teil 1: Deutsch-Englisch / Parte 1: alemán-inglés . vol. 1 (2 ed.). Springer-Verlag. ISBN 978-3642980886. 9783642980886 . Consultado el 5 de agosto de 2015 .
- ^ Speiser, Ambrosius Paul (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [ Computadoras digitales - Conceptos básicos / Circuitos / Operación / Confiabilidad ] (en alemán) (2 ed.). ETH Zürich , Zúrich, Suiza: Springer-Verlag / IBM . pag. 209. LCCN 65-14624 . 0978.
- ↑ Cowlishaw, Mike F. (2015) [1981, 2008]. "Aritmética decimal general" . Recuperado el 2 de enero de 2016 .
- ↑Evans, David Silvester (marzo de 1961). «Capítulo cuatro: Equipos auxiliares: relés de control de salida y de verificación de paridad para digitalizadores». Datos digitales: su derivación y reducción para análisis y control de procesos (1.ª ed.). Londres, Reino Unido: Hilger & Watts Ltd / Interscience Publishers . págs. 46–64 [56–57] . Consultado el 24 de mayo de 2020 .(8+82 páginas) (Nota: El código BCD 8421 de 4 bits con un bit de paridad adicional aplicado como bit menos significativo para lograr la paridad impar del código resultante de 5 bits también se conoce como código Ferranti ).
- ↑ Lala, Parag K. (2007). Principios del diseño digital moderno . John Wiley & Sons . págs. 20–25 . ISBN 978-0-470-07296-7.
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Berger, Erich R. (1962) . "1.3.3. La codificación de Zahlen". Escrito en Karlsruhe, Alemania. En Steinbuch, Karl W. (ed.). Taschenbuch der Nachrichtenverarbeitung (en alemán) (1 ed.). Berlín / Gotinga / Nueva York: Springer-Verlag OHG . págs. 68– 75. LCCN 62-14511 . (Nota: El código Kautz mostrado ( II ), que contiene los ocho estados binarios disponibles con un número impar de unos, es una ligera modificación del código Kautz original ( I ), que contiene los ocho estados con un número par de unos, de modo que la inversión de los bits más significativos crea un complemento a 9 ).
- ^ Kämmerer, Wilhelm [ en alemán] ( mayo de 1969 ). "II.15. Struktur: Informationsdarstellung im Automaten". Escrito en Jena, Alemania. En Frühauf, Hans [en alemán] ; Kämmerer, Wilhelm; Schröder, Kurz; Winkler, Helmut (eds.). Digitale Automaten: teoría, estructura, técnica y programación . Elektronisches Rechnen und Regeln (en alemán). vol. 5 (1 ed.). Berlín, Alemania: Akademie-Verlag GmbH . pag. 161. Licencia núm. 202-100/416/69. Nro. de pedido. 4666ES 20K 3. (Nota: También existe una segunda edición de 1973).
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Dokter , Folkert; Steinhauer, Jürgen (18 de junio de 1973). Electrónica Digital . Biblioteca técnica Philips (PTL) / Macmillan Education (Reimpresión de la primera edición en inglés). Eindhoven, Países Bajos: The Macmillan Press Ltd. / Gloeilampenfabrieken de NV Philips . doi : 10.1007/978-1-349-01417-0 . ISBN 978-1-349-01419-4. SBN 333-13360-9Archivado del original el 16 de julio de 2020. Consultado el 11 de mayo de 2020 .(270 páginas) (Nota: Esta edición se basa en una traducción del volumen I de la edición alemana de dos volúmenes).
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Dokter , Folkert; Steinhauer, Jürgen (1975) [1969]. Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik . Philips Fachbücher (en alemán). vol. I (mejorada y ampliada 5ª ed.). Hamburgo, Alemania: Deutsche Philips GmbH . pag. 50.ISBN 3-87145-272-6.(xii+327+3 páginas) (Nota: La edición alemana del volumen I se publicó en 1969, 1971, dos ediciones en 1972 y 1975. El volumen II se publicó en 1970, 1972, 1973 y 1975).
- 1 2 3 4 5 6 Kautz, William H. (junio de 1954). "IV. Ejemplos A. Códigos binarios para decimales, n = 4". Codificación de datos optimizada para computadoras digitales . Registro de la Convención Nacional de la IRE, 1954, Parte 4 - Computadoras electrónicas y teoría de la información. Sesión 19: Teoría de la información III - Velocidad y computación. Instituto de Investigación de Stanford, Stanford, California, EE. UU.: IRE pp. 47–57 [49, 51– 52, 57]. Archivado del original el 3 de julio de 2020. Recuperado el 3 de julio de 2020. p. 52:
[…] La última columna [de la Tabla II], etiquetada como "Mejor", da la fracción máxima posible con cualquier código, a saber, 0,60, una vez y media mejor que cualquier código convencional. Este extremo se alcanza con los diez vértices fuertemente marcados del gráfico de la
Fig. 4
para n = 4, o, de hecho, con cualquier conjunto de diez combinaciones de códigos que incluyan los ocho con un número par (o los ocho con un número impar) de "1". La segunda y tercera filas de la Tabla II enumeran el cambio decimal promedio y máximo por error binario único no detectado, y se han derivado utilizando las ecuaciones de la Sec. II para Δ
1
y δ
1
. El índice de confusión para decimales utilizando el criterio de "cambio decimal" se toma como c
ij
= |i − j|
i,j = 0, 1, … 9. Nuevamente, la disposición "óptima" posible (la misma para el promedio y el pico), una de las cuales se muestra en la Fig. 4, es sustancialmente mejor que los códigos convencionales. […] Fig. 4
Código de confusión mínima para decimales
. […] δ
1
=2
Δ
1
=15 […]
(11 páginas) (Nota: Además del conjunto combinatorio de códigos BCD de 4 bits de "mínima confusión para decimales", del cual el autor ilustra solo uno explícitamente (reproducido aquí como código I ) en forma de un gráfico de 4 bits, el autor también muestra un "código binario de 4 bits y 16 estados para datos analógicos" en forma de tabla de códigos, que, sin embargo, no se analiza aquí. El código II que se muestra aquí es una modificación del código I analizado por Berger ). - 1 2 3 Chinal, Jean P. (enero de 1973). «Códigos». Escrito en París, Francia. Métodos de diseño para sistemas digitales . Traducido por Preston, Alan; Summer, Arthur (1.ª ed. en inglés). Berlín, Alemania: Akademie-Verlag / Springer-Verlag . pág. 46. doi : 10.1007/978-3-642-86187-1_3 . ISBN 978-0-387-05871-9. Licencia No. 202-100/542/73. Orden No. 7617470(6047) ES 19 B 1 / 20 K 3 . Recuperado el 21-06-2020 .(xviii+506 páginas) (NB. El libro original francés de 1967 se llamó "Techniques Booléennes et Calculateurs Arithmétiques", publicado por Éditions Dunod ).
- 1 2 Manual militar: codificadores - Ángulo del eje a digital (PDF) . Departamento de Defensa de los Estados Unidos . 30 de septiembre de 1991. MIL-HDBK-231A. Archivado (PDF) del original el 25 de julio de 2020. Recuperado el 25 de julio de 2020 .(Nota: Sustituye a MIL-HDBK-231(AS) (1970-07-01).)
- ^ Stopper , Herbert (marzo de 1960). Escrito en Litzelstetten, Alemania. Runge, Wilhelm Tolmé (ed.). "Ermittlung des Codes und der logischen Schaltung einer Zähldekade". Telefunken-Zeitung (TZ) - Technisch-Wissenschaftliche Mitteilungen der Telefunken GMBH (en alemán). 33 (127). Berlín, Alemania: Telefunken : 13-19 .(7 páginas )
- 1 2 Borucki, Lorenz; Dittmann, Joachim (1971) [julio de 1970, 1966, otoño de 1965]. "2.3 Códigos Gebräuchliche en der digitalen Meßtechnik". Escrito en Krefeld / Karlsruhe, Alemania. Digitale Meßtechnik: Eine Einführung (en alemán) (2 ed.). Berlín/Heidelberg, Alemania: Springer-Verlag . págs. 10–23 [12–14]. doi : 10.1007/978-3-642-80560-8 . ISBN 3-540-05058-2LCCN 75-131547 . ISBN 978-3-642-80561-5.(viii+252 páginas) 1.ª edición
- ↑ White, Garland S. (octubre de 1953). "Sistemas de numeración decimal codificados para computadoras digitales". Actas del Instituto de Ingenieros de Radio . 41 (10). Instituto de Ingenieros de Radio (IRE): 1450– 1452. Bibcode : 1953PIRE...41.1450W . doi : 10.1109/JRPROC.1953.274330 . eISSN 2162-6634 . ISSN 0096-8390 . S2CID 51674710 . (3 páginas)
- ↑ "Diferentes tipos de códigos binarios" . Centro electrónico . 1 de mayo de 2019 [28 de enero de 2015]. Sección 2.4 Código 5211. Archivado del original el 18 de mayo de 2020. Consultado el 4 de agosto de 2020 .
- ^ Paul, Matthias R. (10 de agosto de 1995) [1994]. "Unterbrechungsfreier Schleifencode" [ Código de bucle continuo ] . 1.02 (en alemán) . Consultado el 11 de febrero de 2008 .(Nota: El autor denominó a este código Schleifencode (en español: "código de bucle"). Se diferencia del código BCD de Gray únicamente en la codificación del estado 0, lo que lo convierte en un código cíclico de distancia unitaria para aplicaciones de anillos colectores rotatorios de círculo completo . Evitar el patrón de código de ceros permite la autocomprobación del bucle y el uso de las líneas de datos para la distribución ininterrumpida de energía).
- ↑ Gray, Frank (17-03-1953) [13-11-1947]. Comunicación por código de pulsos (PDF) . Nueva York, EE. UU.: Bell Telephone Laboratories, Incorporated . Patente estadounidense 2,632,058 . Número de serie 785697. Archivado (PDF) del original el 05-08-2020 . Recuperado el 05-08-2020 .(13 páginas)
- ↑ Glixon, Harry Robert (marzo de 1957). "¿Se puede aprovechar el código binario-decimal cíclico?" . Control Engineering . 4 (3). Technical Publishing Company , una división de Dun-Donnelley Publishing Corporation, Dun & Bradstreet Corp .: 87–91 . ISSN 0010-8049 . (5 páginas)
- 1 2 Ledley, Robert Steven ; Rotolo, Louis S.; Wilson, James Bruce (1960). «Parte 4. Diseño lógico de circuitos de computadoras digitales; Capítulo 15. Operaciones aritméticas en serie; Capítulo 15-7. Temas adicionales». Ingeniería de computadoras digitales y control (PDF) . Serie de ingeniería eléctrica y electrónica de McGraw-Hill (1.ª ed.). Nueva York, EE. UU.: McGraw-Hill Book Company, Inc. (impresor: The Maple Press Company, York, Pensilvania, EE. UU.). págs. 517–518 . ISBN 0-07036981-X. ISSN 2574-7916 . LCCN 59015055 . OCLC 1033638267 . OL 5776493M . SBN 07036981-X. . ark:/13960/t72v3b312. Archivado (PDF) del original el 19/02/2021 . Recuperado el 19/02/2021 . pág. 517:
[…] El código cíclico es ventajoso principalmente en el uso de circuitos de relés, ya que un relé persistente no dará un estado falso al retrasarse en el paso de un número cíclico al siguiente. Existen muchos otros códigos cíclicos que poseen esta propiedad. […]
{{cite book}}: Incompatibilidad de ISBN/Fecha ( ayuda )(xxiv+835+1 páginas) (Nota: Ledley clasificó el código cíclico descrito como un código binario cíclico codificado en decimal ). - 1 2 3 4 Savard, John JG (2018) [2006]. "Representaciones decimales" . quadibloc . Archivado del original el 16 de julio de 2018. Recuperado el 16 de julio de 2018 .
- ↑ Petherick, Edward John (octubre de 1953). Un sistema cíclico progresivo binario-codificado-decimal para representar números (Nota técnica MS15). Farnborough, Reino Unido: Royal Aircraft Establishment (RAE).(4 páginas) (Nota: A veces se le denomina Sistema binario-decimal codificado cíclicamente para representar números ).
- ↑ Petherick, Edward John; Hopkins, AJ (1958). Algunos dispositivos digitales desarrollados recientemente para codificar las rotaciones de ejes (Nota técnica MS21). Farnborough, Reino Unido: Royal Aircraft Establishment (RAE).
- 1 2 O'Brien, Joseph A. (mayo de 1956) [1955-11-15, 1955-06-23]. "Códigos decimales cíclicos para convertidores analógico-digitales" . Transactions of the American Institute of Electrical Engineers, Part I: Communication and Electronics . 75 (2). Bell Telephone Laboratories, Whippany, Nueva Jersey, EE. UU.: 120–122 . Bibcode : 1956TAICE..75..120O . doi : 10.1109/TCE.1956.6372498 . ISSN 0097-2452 . S2CID 51657314. Artículo 56-21. Archivado del original el 18 de mayo de 2020. Recuperado el 18 de mayo de 2020 . (3 páginas) (Nota: Este documento fue preparado para su presentación en la Reunión General de Invierno de la AIEE, Nueva York, EE. UU., del 30 de enero al 3 de febrero de 1956).
- 1 2 Tompkins, Howard E. (septiembre de 1956) [1956-07-16]. "Códigos binarios decimales de distancia unitaria para conmutación de dos vías" . IRE Transactions on Electronic Computers . Correspondencia. EC-5 (3). Moore School of Electrical Engineering , University of Pennsylvania , Filadelfia, Pensilvania, EE. UU.: 139. Bibcode : 1956IRTEC...5..139T . doi : 10.1109/TEC.1956.5219934 . ISSN 0367-9950 . Archivado del original el 18 de mayo de 2020. Recuperado el 18 de mayo de 2020 . (1 página)
- ↑ Lippel, Bernhard (diciembre de 1955). "Un código decimal para la conversión analógica-digital". IRE Transactions on Electronic Computers . EC-4 (4): 158–159 . Bibcode : 1955IRTEC...4..158L . doi : 10.1109/TEC.1955.5219487 . ISSN 0367-9950 . (2 páginas)
- 1 2 3 Susskind, Alfred Kriss; Ward, John Erwin (1958-03-28) [1957, 1956]. "III.F. Códigos de distancia unitaria / VI.E.2. Códigos binarios reflejados". Escrito en Cambridge, Massachusetts, EE. UU. En Susskind, Alfred Kriss (ed.). Notas sobre técnicas de conversión analógica-digital . Libros de tecnología en ciencia e ingeniería. Vol. 1 (3.ª ed.). Nueva York, EE. UU.: Technology Press del Instituto Tecnológico de Massachusetts / John Wiley & Sons, Inc. / Chapman & Hall, Ltd. pp. 3-7–3-8 [3-7], 3-10–3-16 [3-13–3-16], 6-65–6-60 [6-60]. (x+416+2 páginas) (Nota: El contenido del libro fue preparado originalmente por miembros del personal del Laboratorio de Servomecanismos del Departamento de Ingeniería Eléctrica del MIT para los Programas Especiales de Verano celebrados en 1956 y 1957. El código que Susskind presentó en su obra como "código de lectura" se muestra aquí como código de tipo II, mientras que el código de tipo I es una derivación menor con las dos columnas de bits más significativas intercambiadas para ilustrar mejor las simetrías).
- 1 2 Yuen, Chun-Kwong (diciembre de 1977). " Una nueva representación para números decimales" . IEEE Transactions on Computers . C-26 (12): 1286– 1288. Bibcode : 1977ITCmp.100.1286Y . doi : 10.1109/TC.1977.1674792 . S2CID 40879271. Archivado del original el 8 de agosto de 2020. Recuperado el 8 de agosto de 2020 .
- ↑ Lucal, Harold M. (diciembre de 1959). "Operaciones aritméticas para computadoras digitales usando un binario reflejado modificado". IRE Transactions on Electronic Computers . EC-8 (4): 449– 458. doi : 10.1109/TEC.1959.5222057 . ISSN 0367-9950 . S2CID 206673385 . (10 páginas)
- ↑ Dewar, Robert Berriedale Keith ; Smosna, Matthew (1990). Microprocesadores: una perspectiva del programador (1.ª ed.). Instituto Courant , Universidad de Nueva York , Nueva York, EE. UU.: McGraw-Hill Publishing Company . pág. 14. ISBN 0-07-016638-2. LCCN 89-77320 . (xviii+462 páginas)
- ↑ "Capítulo 8: Instrucciones decimales". Principios de funcionamiento del IBM System/370 . IBM . Marzo de 1980.
- ↑ "Capítulo 3: Representación de datos". Manual de arquitectura del PDP-11 . Digital Equipment Corporation . 1983.
- 1 2 Manual de arquitectura VAX-11 . Digital Equipment Corporation . 1985.
- ↑ "Referencia de ILE RPG" .
- ↑ "Tabla de códigos de caracteres IBM 1401/1440/1460/1410/7010 en orden BCD" (PDF) .
- ↑ "Conjunto de instrucciones 6502" . Archivado del original el 8 de mayo de 2018.
- ↑ "Códigos de operación NMOS 6502" . Archivado del original el 14 de enero de 2016.
- ↑ "Conjunto de instrucciones del 68000" (PDF) . Archivado (PDF) del original el 20/11/2023 . Consultado el 21/11/2023 .(58 páginas)
- ↑ Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica (PDF) . Intel. Marzo de 2013. Sección 4.7. Archivado (PDF) del original el 2 de abril de 2013. Consultado el 23 de abril de 2013 .
- ↑ "4.7 BCD y enteros BCD empaquetados". Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32, Volumen 1: Arquitectura básica (PDF) . Versión 072. Vol. 1. Intel Corporation . 27-05-2020 [1997]. pp. 3–2 , 4-9–4-11 [4-10]. 253665-072US. Archivado (PDF) del original el 06-08-2020 . Recuperado el 06-08-2020 . p. 4-10:
[…] Al operar con enteros BCD en
registros de propósito general
, los valores BCD pueden estar desempaquetados (un dígito BCD por byte) o empaquetados (dos dígitos BCD por byte). El valor de un entero BCD desempaquetado es el valor binario del
medio byte
inferior (bits 0 a 3). El medio byte alto (bits 4 a 7) puede tener cualquier valor durante la suma y la resta, pero debe ser cero durante la multiplicación y la división. Los enteros BCD empaquetados permiten que dos dígitos BCD estén contenidos en un byte. Aquí, el dígito en el medio byte alto es más significativo que el dígito en el medio byte bajo. […] Al operar con enteros BCD en los registros de datos
de la FPU
x87
, los valores BCD se empaquetan en un formato de 80 bits y se denominan enteros decimales. En este formato, los primeros 9 bytes contienen 18 dígitos BCD, 2 dígitos por byte. El
dígito menos significativo
está contenido en el medio byte inferior del byte 0 y el
dígito más significativo
está contenido en el medio byte superior del byte 9. El bit más significativo del byte 10 contiene el
bit de signo
(0 = positivo y 1 = negativo; los bits 0 a 6 del byte 10 son bits
indiferentes
). Los enteros decimales negativos no se almacenan en forma
de complemento a dos
; Se distinguen de los enteros decimales positivos únicamente por el bit de signo. El rango de enteros decimales que se pueden codificar en este formato es de −10¹⁸
+
1 a
10¹⁸
− 1. El formato de entero decimal solo existe en memoria. Cuando un entero decimal se carga en un registro de datos de la FPU x87, se convierte automáticamente al
formato de punto flotante de doble precisión extendida
. Todos los enteros decimales se pueden representar con exactitud en formato de doble precisión extendida. […]
- ↑ Jones, Douglas W. (25-11-2015) [1999]. "Aritmética BCD, un tutorial" . Tutoriales de aritmética . Iowa City, Iowa, EE. UU.: Universidad de Iowa , Departamento de Ciencias de la Computación . Recuperado el 3-01-2016 .
- ↑ Universidad de Alicante. "Una arquitectura basada en Cordic para cálculos decimales de alto rendimiento" (PDF) . IEEE . Archivado (PDF) del original el 5 de enero de 2010. Consultado el 15 de agosto de 2015 .
- ↑ "Rotación CORDIC decimal basada en selección por redondeo: algoritmo y arquitectura" (PDF) . British Computer Society . Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 14 de agosto de 2015 .
- ↑ Mathur, Aditya P. (1989). Introducción a los microprocesadores (3.ª ed.). Tata McGraw-Hill Publishing Company Limited . ISBN 978-0-07-460222-5.
- ↑ 3GPP TS 29.002: Especificación de la parte de la aplicación móvil (MAP) (Informe técnico). 2013. sec. 17.7.8 Tipos de datos comunes.
- ↑ "Directrices de protocolos de señalización y conmutación (SPS) para el uso de la notación de sintaxis abstracta uno (ASN.1) en protocolos de aplicaciones de telecomunicaciones" (PDF) . pág. 15. Archivado (PDF) del original el 4 de diciembre de 2013.
- ↑ "Especificación de la parte de la aplicación móvil XOM (XMAP)" (PDF) . pág. 93. Archivado del original (PDF) el 21 de febrero de 2015. Consultado el 27 de junio de 2013 .
- ↑ "Protocolo de estrato sin acceso (NAS) para el sistema 5G (5GS); Etapa 3. (3GPP TS 24.501 versión 16.10.0 Release 16) TS 24.501 release 16.10.0" (PDF) . ETSI y 3GPP . Archivado (PDF) del original el 17 de febrero de 2022. Consultado el 26 de febrero de 2022 .(TS 24.501)
- ↑ "Sistema de telecomunicaciones celulares digitales (Fase 2+) (GSM); Sistema Universal de Telecomunicaciones Móviles (UMTS); LTE; 5G; Numeración, direccionamiento e identificación (3GPP TS 23.003 versión 16.8.0 Release 16)" (PDF) . ETSI y 3GPP . Archivado (PDF) del original el 26 de febrero de 2022. Consultado el 26 de febrero de 2022 .(TS 23.003)
- ↑ "Circuitos de contador de temporizador en un IBM PC" (PDF) . www.se.ecu.edu.au. Archivado del original (PDF) el 10 de octubre de 2008. Consultado el 22 de mayo de 2022 .(7 páginas)
- ↑ Hoja de datos del MC6818
- ↑ Gottschalk v. Benson , 409 U.S. 63, 72 (1972) .
Lecturas adicionales
- Mackenzie, Charles E. (1980). Conjuntos de caracteres codificados, historia y desarrollo (PDF) . Serie de programación de sistemas (1.ª ed.). Addison-Wesley Publishing Company, Inc. ISBN 978-0-201-14460-4LCCN 77-90165 . Archivado (PDF) del original el 26 de mayo de 2016. Consultado el 25 de agosto de 2019 .
- Richards, Richard Kohler (1955). Operaciones aritméticas en computadoras digitales . Nueva York, EE. UU.: van Nostrand . págs. 397–.
- Schmid, Hermann (1974). Cálculo decimal (1.ª ed.). Binghamton, Nueva York, EE. UU.: John Wiley & Sons . ISBN 0-471-76180-X.y Schmid, Hermann (1983) [1974]. Cálculo decimal (1.ª ed. (reimpresión) ). Malabar, Florida, EE. UU.: Robert E. Krieger Publishing Company. ISBN 0-89874-318-4.(Nota: Al menos algunos lotes de la edición reimpresa de Krieger presentaban errores de impresión, con las páginas 115 a 146 defectuosas).
- Massalin, Henry (octubre de 1987). Katz, Randy (ed.). «Superoptimizer: Una mirada al programa más pequeño» (PDF) . ACM SIGOPS Operating Systems Review . 21 (4): 122–126 . doi : 10.1145/36204.36194 . ISBN 0-8186-0805-6. Archivado (PDF) del original el 04-07-2017 . Recuperado el 25-04-2012 .(Véase también: ACM SIGPLAN Notices, vol. 22, n.º 10, IEEE Computer Society Press, n.º 87CH2440-6, octubre de 1987)
- "Superoptimizador GNU" . HP-UX .
- Shirazi, Behrooz; Yun, David YY; Zhang, Chang N. (marzo de 1988). Diseños VLSI para la suma decimal codificada en binario redundante . Séptima Conferencia Internacional Anual Phoenix de IEEE sobre Computadoras y Comunicaciones, 1988. IEEE . págs. 52–56 .
- Brown; Vranesic (2003). Fundamentos de lógica digital .
- Thapliyal, Himanshu; Arabnia, Hamid R. (noviembre de 2006). Sumador BCD con anticipación de acarreo modificado con implementación en CMOS y lógica reversible . Actas de la Conferencia Internacional de Diseño de Computadoras de 2006 (CDES'06). CSREA Press. págs. 64–69 . ISBN 1-60132-009-4.
- Kaivani, A.; Alhosseini, A. Zaker; Gorgin, S.; Fazlali, M. (diciembre de 2006). Implementación reversible de un convertidor de formato decimal densamente empaquetado a formato decimal codificado en binario utilizando IEEE-754R . 9.ª Conferencia Internacional sobre Tecnología de la Información (ICIT'06). IEEE . págs. 273–276 .
- Cowlishaw, Mike F. (2009) [2002, 2008]. "Bibliografía de material sobre aritmética decimal – por categoría" . Aritmética decimal general . IBM . Recuperado el 2 de enero de 2016 .
Enlaces externos
- Cowlishaw, Mike F. (2014) [2000]. "Un resumen de la codificación de datos decimales de Chen-Ho" . Aritmética decimal general . IBM . Recuperado el 2 de enero de 2016 .
- Cowlishaw, Mike F. (2007) [2000]. "Un resumen de la codificación decimal densamente empaquetada" . Aritmética decimal general . IBM . Recuperado el 2 de enero de 2016 .
- Convertir BCD a decimal, binario y hexadecimal y viceversa.
- BCD para Java
- aritmética informática
- Sistemas numéricos
- Sistemas de numeración posicional no estándar
- Aritmética binaria