BCD ( decimal codificado en binario ), también llamado BCD alfanumérico , BCD alfamérico , código de intercambio BCD , [ 1 ] o BCDIC , [ 1 ] es una familia de representaciones de números, letras latinas mayúsculas y algunos caracteres especiales y de control como códigos de caracteres de seis bits .
A diferencia de codificaciones posteriores como ASCII , los códigos BCD no estaban estandarizados. Diferentes fabricantes de computadoras, e incluso distintas líneas de productos del mismo fabricante, solían tener sus propias variantes, que a veces incluían caracteres únicos. Otras codificaciones de seis bits con asignaciones completamente diferentes, como algunas variantes de FIELDATA [ 1 ] o Transcode , a veces se denominan erróneamente BCD.
Muchas variantes de BCD codifican los caracteres del '0' al '9' como los valores binarios correspondientes.
Historia
Técnicamente, el sistema decimal codificado en binario describe la codificación de números decimales donde cada dígito decimal está representado por un número fijo de bits, generalmente cuatro.
Con la introducción de la tarjeta IBM en 1928, IBM creó un código [ a ] capaz de representar información alfanumérica, [ 2 ] posteriormente adoptado por otros fabricantes. Este código representa los números del 0 al 9 mediante un solo punzón, y utiliza varios punzones para las letras mayúsculas y los caracteres especiales. [ 3 ] Una letra tiene dos punzones (zona [12,11,0] + dígito [1–9]); la mayoría de los caracteres especiales tienen dos o tres punzones (zona [12,11,0,o ninguna] + dígito [2–7] + 8).
El código BCD es la adaptación del código de tarjeta perforada a un código binario de seis bits mediante la codificación de las filas de dígitos (nueve filas, más las no perforadas) en los cuatro bits inferiores y las filas de zona (tres filas, más las no perforadas) en los dos bits superiores. [ 4 ] El dígito cero (una sola perforación en la fila 0) generalmente se maneja de alguna manera especial, y el código de dígitos se extendió a valores del 10 al 15 combinando un dígito en el rango 2–7 con una perforación en la fila 8. IBM aplicó los términos decimal codificado en binario y BCD a las variaciones de alfamédicos BCD utilizados en la mayoría de las primeras computadoras IBM, incluidas la IBM 1620 , la serie IBM 1400 y los miembros de la arquitectura no decimal de la serie IBM 700/7000 .
Entre los proveedores que utilizaban BCD se encontraban Burroughs , [ 5 ] Bull , CDC , [ 6 ] IBM , General Electric (la división de computadoras fue comprada por Honeywell en 1969), NCR , Siemens y Sperry - UNIVAC .
IBM anunció el código de intercambio decimal codificado en binario extendido de 8 bits (EBCDIC), basado en BCDIC, en 1964 con la presentación de su línea System/360 .
Personajes especiales
El carácter de marca de registro ( representado como ‡) es un carácter que se utiliza para marcar el final de un registro . [ 7 ] El código BCD para este carácter es 32 8 en algunas variantes BCD. El equivalente Unicode más cercano es U+29E7 ⧧ THERMODYNAMIC , pero no se encuentra en muchas fuentes, por lo que a menudo se utiliza U+2021 ‡ DOUBLE DAGGER en su lugar. Funcionalmente, esto corresponde al carácter EBCDIC IRS (ASCII RS ), X'1E'.
El carácter de marca de grupo ( representado como ) es un carácter que se utiliza para indicar el inicio o el final de un grupo de campos relacionados. [ 8 ] El código BCD para este carácter es 77 8 en algunas variantes BCD. La marca de grupo se propuso para la estandarización Unicode en 2015, [ 9 ] y se le asignó el valor U+2BD2 ⯒ GROUP MARK . Funcionalmente, esto corresponde al carácter EBCDIC IGS (ASCII GS ), X'1D'. Ahora está en Unicode 10.0 en esta posición, pero solo las fuentes Symbola y Unifont lo admiten.
En cambio, la marca de palabras no es un carácter BCD. Más bien, es un bit de indicador que se utiliza para marcar el final de una palabra en algunos ordenadores de longitud de palabra variable, como el IBM 1401 .
Variaciones del código BCD
Existen muchas versiones diferentes del código BCD de seis bits. Hay tres categorías principales de diferencia:
- La correspondencia entre las marcas de zona y los bits de orden superior. Todos los códigos traducen la ausencia de marcas de zona a un patrón de bits de 00, pero algunos codifican las marcas de zona en el orden 12-11-0, conservando el orden alfabético, mientras que otros utilizan el orden 0-11-12, lo que da como resultado un alfabeto parcialmente invertido.
- Manejo del dígito 0. La traducción directa desde el formato perforado colocaría el espacio en blanco antes de los dígitos 1 a 9, y codificaría el 0 al inicio de la línea con una 'S'. Todos los códigos tienen un manejo especial que traduce el dígito 0 al código binario de ceros (y mueve el espacio en blanco a otro lugar), o le asigna el código binario 001010 (decimal 10) y mueve el perforado 8+2 a otro lugar.
- La asignación de caracteres especiales. Los caracteres asignados a códigos más allá del conjunto alfanumérico básico variaban ampliamente, incluso dentro de un mismo modelo de computadora. Por ejemplo, algunas computadoras [ b ] tenían el porcentaje y el rombo ( U+2311 ⌑ SQUARE LOZENGE ) en los mismos códigos que los paréntesis izquierdo y derecho en otras [ c ] codificaciones.
En los países de habla hispana, el carácter "Ñ" no existía en el sistema original, por lo que la mayoría de los fabricantes eligieron "@" : Bull, NCR y Control Data, pero hubo una inconsistencia al fusionar las bases de datos al código ASCII de 7 bits, ya que en ese sistema de codificación se eligió el carácter "/" , lo que dio como resultado dos códigos diferentes para el mismo carácter.
Ejemplos de códigos BCD
Las siguientes tablas muestran los valores numéricos de los caracteres BCD en notación hexadecimal (base 16), ya que esta refleja con mayor claridad la estructura del código binario decimal de 4 bits, más dos bits adicionales. Por ejemplo, el código para la letra 'A', en la fila 3x y la columna x1, es 31 en hexadecimal, o '11 0001' en binario.
Estilo de cinta
Código BCD de 48 caracteres
Las primeras versiones de BCDIC tenían 48 caracteres, ya que se basaban en los patrones de perforación de tarjetas y en los conjuntos de caracteres de las impresoras, ninguno de los cuales favorecía el uso de un número de caracteres que fuera potencia de dos.
Esto se basaba en un código de tarjeta perforada de 40 caracteres; los 37 originales (10 dígitos, 26 letras y un espacio en blanco), más tres caracteres comercialmente importantes añadidos alrededor de 1932: [ 1 ] : 67 guion menos utilizado para imprimir saldos de crédito y nombres con guion, el ampersand también utilizado en muchos nombres y direcciones ( Procter & Gamble , Sr. y Sra. Smith), y el asterisco utilizado para sobreimprimir campos no utilizados al imprimir cheques .
Código BCD IBM 1401
En lugar de seguir la representación de almacenamiento del IBM 704, el IBM 1401 siguió la representación de cinta (derivada del BCD de 48 caracteres), utilizando así el código de ceros para el espacio en blanco y el código 10 (0x0A) para el dígito cero. Tenía formas de caracteres definidas para todos los valores posibles, con fines de documentación, [ 10 ] pero solo 48 de los 63 caracteres no en blanco eran imprimibles, y existía una variación considerable en cómo se representaban en la práctica los demás valores de código (sombreados en la tabla siguiente). Incluso los demás caracteres variaban entre las diferentes cadenas de impresión disponibles para la impresora IBM 1403 .
Página de códigos 353
La página de códigos BCDIC-A se asignó como página de códigos 353 , también conocida como CP353 . Algunos de los caracteres de esta página de códigos no están en Unicode. (La duplicación de '#' se puede encontrar en la propia documentación de IBM y no es un error aquí. [ 11 ] )
En 0x1A está la marca de registro. En 0x3F está la marca de grupo.
Página de código 354
La página de códigos BCDIC-B se asignó como página de códigos 354 , también conocida como CP354 . [ 12 ] Algunos de los caracteres de esta página de códigos no están en Unicode.
En 0x1A está la marca de registro. En 0x3F está la marca de grupo.
Páginas de códigos PTTC/BCD
PTTC/BCD tenía 5 opciones. Había cinco páginas de códigos. Se muestran a continuación. La opción estándar de PTTC/BCD se asignó como página de código 355 o CP355 .
La opción PTTC/BCD H se asignó como página de código 357 o CP357 .
La opción de correspondencia PTTC/BCD se asignó como página de código 358 , o CP358 .
La opción PTTC/BCD Monocase se asignó como página de código 359 o CP359 .
La opción Duocase PTTC/BCD se asignó como página de código 360 o CP360 .
Estilo de almacenamiento IBM 704
Código BCD IBM 704
El IBM 704 reordenó el código BCDIC para permitir un orden de intercalación alfabético normal internamente, con 0 antes que 1 y A antes que Z. Podía traducir automáticamente entre esta forma interna y el BCDIC anterior al leer y escribir cintas magnéticas . [ 13 ] : 35
La siguiente tabla muestra las asignaciones de código para la computadora IBM 704. Las posiciones de código no asignadas aparecen en blanco. [ 13 ] : 35
(+0y−0Se utilizaban caracteres poco frecuentes que correspondían a la convención de tarjetas perforadas de un dígito 0 con un signo sobreperforado en las filas 12 u 11.
La siguiente tabla muestra las asignaciones de código para la impresora tipo 716 utilizada desde la computadora IBM 704 hasta la 7094. [ 13 ] : 58 La interfaz 704 [ d ] enviaba filas de tarjetas perforadas virtuales a esta impresora, dos palabras (72 bits) a la vez, por lo que el mapeo de caracteres BCD de 6 bits se realizaba por software y no estaba integrado en la impresora.
Este es un repertorio de 45 caracteres (sin contar el espacio en blanco, que es manejado especialmente por la impresora), ya que los caracteres +, -y *están duplicados.
Conjunto de caracteres Fortran
Hubo algunas variaciones; IBM 704 Fortran tenía un conjunto diferente de caracteres especiales (conservando solo el signo menos y el asterisco duplicados , el punto , la coma y el signo de dólar ). [ 14 ]
Se utilizó un código similar para los sucesores IBM 709 , 7090 y 7094 , [ 15 ] pero con algunos de los caracteres especiales reasignados:
Código GBCD
A continuación se muestra la tabla del código GBCD de GE/Honeywell, una variante de BCD. [ 16 ]
Código BCD Burroughs B5500
La siguiente tabla muestra las asignaciones de códigos para la computadora Burroughs B5500 , a veces denominada BIC (Burroughs Interchange Code). [ 17 ]
Véase también
Notas
- ↑ En realidad, existen varios códigos de tarjeta; por ejemplo, en 1964 había diez versiones de la IBM 026 con conjuntos de caracteres ligeramente diferentes.
- ↑ Por ejemplo, IBM 702 , IBM 705
- ↑ Por ejemplo, IBM 701 , IBM 704 .
- ↑ La interfaz, por ejemplo, del 7090, es diferente, aunque el software aún debe realizar el mapeo.
Referencias
- 1 2 3 4 5 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 0-201-14460-3LCCN 77-90165 . Archivado (PDF) del original el 26 de mayo de 2016. Consultado el 22 de abril de 2017 .
- ↑ Pugh, Emerson W.; Heide, Lars. "STARS: Equipos de tarjetas perforadas" . IEEE Global History Network. Archivado del original el 11 de mayo de 2012. Consultado el 9 de junio de 2012 .
- ↑ Pugh, Emerson W. (1995). Building IBM: Shaping and Industry and Its Technology . MIT Press . pp. 50–51 . ISBN 978-0-262-16147-3.
- ↑ Jones, Douglas W. "Códigos de tarjetas perforadas" . Consultado el 1 de enero de 2014 .
- ↑ Sistemas de procesamiento de información Burroughs B5500: Manual de referencia (PDF) . Burroughs Corporation . 1964. Archivado del original (PDF) el 29 de julio de 2020. Consultado el 8 de junio de 2012 .
- ↑ Control Data Corporation (1965). Códigos/Sistema informático Control Data 6600 (PDF) .
- ↑ "Record-mark" . Enciclopedia . PC Magazine . Consultado el 9 de abril de 2016 .
- ↑ "marca de grupo" . Encyclopedia.com . Consultado el 9 de abril de 2016 .
- ↑ Shirriff, Ken. "Propuesta para la adición del símbolo de marca de grupo" (PDF) . unicode.org . Consultado el 9 de abril de 2016 .
- ↑ Sistema de procesamiento de datos IBM 1401: Manual de referencia (PDF) . IBM . Abril de 1962. pág. 170. A24-1403-5. Archivado del original (PDF) el 14 de marzo de 2012.
- ↑ "Sistemas y software globalización cp00353z" (PDF) . www-03.ibm.com . Archivado del original (PDF) el 21/01/2013 . Consultado el 30/06/2022 .
- ↑ https://ccsids.net/ccsids.html#ccsid-354 .
{{cite web}}: Falta o está vacío|title=( ayuda ) - 1 2 3 Manual de operación de la máquina de procesamiento electrónico de datos IBM 704 (PDF) . IBM . 1955. págs. 35, 58. Formulario 24-6661-2 . Recuperado el 22 de abril de 2017 .
- ↑ "Sistema de codificación automática Fortran para el IBM 704" (PDF) . IBM . 15 de octubre de 1956. pág. 49. Archivado del original (PDF) el 24 de septiembre de 2015. Consultado el 15 de septiembre de 2015 .
- ↑ Harper, Jack (21 de agosto de 2001). "Representación de caracteres de IBM 7090/94" . Archivado del original el 16 de marzo de 2017. Consultado el 22 de abril de 2017 .
- ↑ "Sección: Tablas de caracteres en computadoras BULL" (PDF) . Archivado del original (PDF) el 8 de julio de 2011. Consultado el 15 de noviembre de 2010 .
- ↑ Burroughs B 5500 Sistemas de procesamiento de información Manual de referencia extendido de Algol (PDF) . 1966. pág. B-1.
Lecturas adicionales
- Sistema operativo - GCOS 8 Sistema operativo - Guía del programador - Instrucciones de montaje de la serie Bull NovaScale 9000 - GCOS 8 (PDF) . Bull SA CEDOC . Noviembre de 2003. 67 A2 RJ78 REV00. Archivado del original (PDF) el 12 de febrero de 2015.
- Bonten, Jo HM (2009-03-08) [2007]. "Formatos de datos en computadoras antiguas de 48 y 36 bits: caracteres de seis bits" . Geldrop, Países Bajos. Archivado del original el 16 de junio de 2016. Recuperado el 16 de junio de 2016 .
- Conjuntos de caracteres
- Codificación de caracteres
- Páginas de códigos EBCDIC
