BCD (codificación de caracteres)

Códigos decimales codificados en binario de seis bits

Códigos de intercambio BCD
Clasificación Codificaciones latinas básicas alfanuméricas de 6 bits
Sucedido porEBCDIC

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 numerales, 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. Los distintos fabricantes de computadoras, e incluso las distintas líneas de productos del mismo fabricante, solían tener sus propias variantes y, 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 incorrectamente BCD.

Muchas variantes de BCD codifican los caracteres '0' a '9' como valores binarios correspondientes.

Historia

Técnicamente, el 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 una sola perforación, y utiliza múltiples perforaciones para letras mayúsculas y caracteres especiales. [3] Una letra tiene dos perforaciones (zona [12,11,0] + dígito [1–9]); la mayoría de los caracteres especiales tienen dos o tres perforaciones (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 codificando 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) suele manejarse de alguna manera especial, y el código de dígitos se extendió a los valores del 10 al 15 combinando un dígito en el rango del 2 al 7 con una perforación en la fila 8. IBM aplicó los términos decimal codificado en binario y BCD a las variaciones de alfanuméricos BCD utilizados en la mayoría de las primeras computadoras IBM, incluidas las series IBM 1620 , IBM 1400 y los miembros de arquitectura no decimal de la serie IBM 700/7000 .

Entre los proveedores que utilizaban BCD estaban Burroughs , [5] Bull , CDC , [6] IBM , General Electric (la división informática fue adquirida 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 introducción de su línea System/360 .

Caracteres especiales

El carácter Recordmark o Record mark (representado como ‡) es un carácter utilizado 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+29E7THERMODYNAMIC , pero no se encuentra en muchas fuentes, por lo que a menudo se utiliza U+2021DOUBLE DAGGER en su lugar. Funcionalmente, esto corresponde al carácter EBCDIC IRS (ASCII RS ), X'1E'.

El carácter Groupmark o Group mark (representado como ) es un carácter utilizado 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. El groupmark fue propuesto para la estandarización Unicode en 2015, [9] y se le asignó el valor U+2BD2GROUP 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.

Por el contrario , la marca denominativa no es un carácter BCD, sino un bit indicador que se utiliza para marcar el final de una palabra en algunas computadoras con longitud de palabra variable, como la IBM 1401 .

Variaciones del código BCD

Existen muchas versiones diferentes del código BCD de seis bits. Existen tres categorías principales de diferencias:

  1. Asignación de los punzones de zona a bits de orden superior. Todos los códigos traducen la ausencia de punzones de zona a un patrón de bits de 00, pero algunos codifican los punzones de zona en 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.
  2. El manejo del dígito 0. La traducción directa de la forma perforada colocaría el espacio en blanco antes de los dígitos 1 a 9 y codificaría el 0 al comienzo de la línea con una "S". Todos los códigos tienen algún manejo de casos especiales que traduce el dígito 0 al código binario de todos ceros (y mueve el espacio en blanco a otro lugar), o le da el código binario 001010 (decimal 10) y mueve el punzón 8+2 a otro lugar.
  3. 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+2311SQUARE LOZENGE ) en los mismos códigos que los paréntesis izquierdo y derecho en otras codificaciones [c] .

En los países de habla hispana, el carácter "Ñ" no existía en el sistema original, por lo que se eligió "@" por la mayoría de los fabricantes: Bull, NCR y Control Data, pero existía una inconsistencia al fusionar las bases de datos a código ASCII de 7 bits, pues en ese sistema de codificación se eligió el carácter "/" , resultando dos códigos diferentes para el mismo carácter.

Ejemplos de códigos BCD

Los siguientes gráficos muestran los valores numéricos de los caracteres BCD en notación hexadecimal (base 16), ya que refleja con mayor claridad la estructura de un sistema decimal codificado en binario de 4 bits, más dos bits adicionales. Por ejemplo, el código para "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 estaban basadas en patrones de perforación de tarjetas y en conjuntos de caracteres de impresoras, ninguno de los cuales fomentaba tener un número de caracteres potencia de dos.

Código BCDIC de 48 caracteres de IBM [1] : 68 
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#@
1x/SyoVYoincógnitaYO,%
2x-YoKyoMETROnorteOhPAGQR$*
3x&ABdoDmiFGRAMOyoI.

Esto se basó en un código de tarjeta perforada de 40 caracteres; los 37 originales (10 dígitos, 26 letras y espacio en blanco), más tres caracteres comercialmente importantes agregados alrededor de 1932: [1] : 67  guión-menos utilizado para imprimir saldos de crédito y nombres con guión, el ampersand también utilizado en muchos nombres y direcciones ( Procter & Gamble , Mr. & Mrs. 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 (descendiente del BCD de 48 caracteres), utilizando así el código de todos los ceros para el espacio en blanco y el código 10 (0x0A) para el dígito cero. Había definido formas de caracteres para todos los valores posibles, con fines de documentación, [10] pero sólo 48 de los 63 caracteres que no eran espacios en blanco eran imprimibles, y habí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 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#@:>
1x¢/SyoVYoincógnitaYO,%='"
2x-YoKyoMETROnorteOhPAGQR!$*);Δ
3x&ABdoDmiFGRAMOyoI?.(<

Página de código 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 en este caso. [11] )

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#@:>
1x/SyoVYoincógnitaYO,%gamma\
2x-YoKyoMETROnorteOhPAGQR!#*];Δ
3x&ABdoDmiFGRAMOyoI?.[<

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.

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890':>
1x/SyoVYoincógnitaYO,(gamma\
2x-YoKyoMETROnorteOhPAGQR!#*];Δ
3x+ABdoDmiFGRAMOyoI?.)[<

En 0x1A está la marca de registro. En 0x3F está la marca de grupo.

Páginas de códigos PTTC/BCD

El PTTC/BCD tenía 5 opciones. Había cinco páginas de códigos. Se muestran a continuación. La opción estándar del PTTC/BCD se asignó como página de códigos 355 o CP355 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#
1x@/SyoVYoincógnitaYO,gamma
2x-YoKyoMETROnorteOhPAGQR<$
3x&ABdoDmiFGRAMOyoI).

La opción PTTC/BCD H se asignó como página de códigos 357 o CP357 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890=
1x'/SyoVYoincógnitaYO,
2x-YoKyoMETROnorteOhPAGQR!$
3x+ABdoDmiFGRAMOyoI?.

La opción de correspondencia PTTC/BCD se asignó como página de códigos 358 o CP358 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890'
1x!/SyoVYoincógnitaYO,
2x-YoKyoMETROnorteOhPAGQR<;
3x=ABdoDmiFGRAMOyoI>.

La opción Monocase PTTC/BCD se asignó como página de códigos 359 o CP359 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#
1x@/SyoVYoincógnitaYO,
2x-YoKyoMETROnorteOhPAGQR$
3x&ABdoDmiFGRAMOyoI.

La opción Duocase PTTC/BCD se asignó como página de códigos 360 o CP360 .

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xespacio1234567890#
1x@/SyoVYoincógnitaYO,
2x-YoKyoMETROnorteOhPAGQR$
3x&ABdoDmiFGRAMOyoI.

Estilo de almacenamiento IBM 704

Código BCD IBM 704

El IBM 704 reordenó el código BCDIC para permitir un orden de clasificación alfabético normal internamente, con 0 antes de 1 y A antes de 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ódigos para la computadora IBM 704. Las posiciones de código no asignadas aparecen como espacios en blanco. [13] : 35 

Conjunto de caracteres IBM 704
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x0123456789#@
1x&ABdoDmiFGRAMOyoI+0.
2x-YoKyoMETROnorteOhPAGQR0$*
3xespacio/SyoVYoincógnitaYO,%

(+0y0(Raramente se utilizaban caracteres que correspondían a la convención de tarjetas perforadas de un dígito 0 con un signo perforado en las filas 12 u 11.)

La siguiente tabla muestra las asignaciones de código para la impresora tipo 716 utilizada a partir de la computadora IBM 704 y 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 la asignación de caracteres BCD de 6 bits se hacía mediante software y no estaba integrada en la impresora.

Conjunto de caracteres G de la impresora IBM 716
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x*123456789+-
1x+ABdoDmiFGRAMOyoI.
2x-YoKyoMETROnorteOhPAGQR$*
3x0/SyoVYoincógnitaYO,%

Se trata de 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 (preservando solo el signo menos duplicado). [14]

Conjunto de caracteres Fortran de la impresora IBM 716
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x*123456789=-
1x+ABdoDmiFGRAMOyoI.)
2x-YoKyoMETROnorteOhPAGQR$*
3x0/SyoVYoincógnitaYO,(

Se utilizó un código similar para los sucesores IBM 709 , 7090 y 7094 , [15] pero con algunos de los caracteres especiales reasignados:

Conjunto de caracteres IBM 7090/7094
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x0123456789="
1x&ABdoDmiFGRAMOyoI+0.)
2x-YoKyoMETROnorteOhPAGQR0$*
3xespacio/SyoVYoincógnitaYO±,(

Código GBCD

A continuación se muestra la tabla del código GBCD de GE/Honeywell, una variante del BCD. [16]

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x0123456789[#@:>?
1xespacioABdoDmiFGRAMOyoI&.](<\
2x^YoKyoMETROnorteOhPAGQR-$*);'
3x+/SyoVYoincógnitaYO_,%="!

Código BCD de Burroughs B5500

La siguiente tabla muestra las asignaciones de códigos para la computadora Burroughs B5500 , a veces denominada BIC (Código de intercambio de Burroughs). [17]

x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0x0123456789#@?:>
1x+ABdoDmiFGRAMOyoI.[&(<
2x×YoKyoMETROnorteOhPAGQR$*-);
3xespacio/SyoVYoincógnitaYO,%=]"

Véase también

Notas

  1. ^ En realidad, existen varios códigos de tarjeta; por ejemplo, en 1964 había diez versiones del IBM 026 con conjuntos de caracteres ligeramente diferentes.
  2. ^ Por ejemplo, IBM 702 , IBM 705
  3. ^ Por ejemplo, IBM 701 , IBM 704 .
  4. ^ La interfaz, por ejemplo, del 7090, es diferente, aunque el software todavía debe realizar el mapeo.

Referencias

  1. ^ abcde Mackenzie, Charles E. (1980). Conjuntos de caracteres codificados, historia y desarrollo (PDF) . Serie de programación de sistemas (1.ª edición). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN  77-90165. Archivado (PDF) del original el 26 de mayo de 2016. Consultado el 22 de abril de 2017 .[1]
  2. ^ Pugh, Emerson W.; Heide, Lars. "STARS: Equipos para tarjetas perforadas". IEEE Global History Network. Archivado desde el original el 2012-05-11 . Consultado el 2012-06-09 .
  3. ^ Pugh, Emerson W. (1995). La construcción de IBM: la configuración de la industria y su tecnología . MIT Press . Págs. 50-51. ISBN. 978-0-262-16147-3.
  4. ^ Jones, Douglas W. "Códigos de tarjetas perforadas" . Consultado el 1 de enero de 2014 .
  5. ^ Burroughs B5500 Information Processing Systems: Reference Manual (PDF) . Burroughs Corporation . 1964. Archivado desde el original (PDF) el 2020-07-29 . Consultado el 2012-06-08 .
  6. ^ Control Data Corporation (1965). Códigos/Sistema informático Control Data 6600 (PDF) .
  7. ^ "Marca de registro". Enciclopedia . PC Magazine . Consultado el 9 de abril de 2016 .
  8. ^ "marca de grupo". Encyclopedia.com . Consultado el 9 de abril de 2016 .
  9. ^ Shirriff, Ken. "Propuesta para la incorporación del símbolo de marca de grupo" (PDF) . unicode.org . Consultado el 9 de abril de 2016 .
  10. ^ IBM 1401 Data Processing System: Reference Manual (PDF) . IBM . Abril de 1962. pág. 170. A24-1403-5. Archivado desde el original (PDF) el 14 de marzo de 2012.
  11. ^ "Globalización del software de Systems i cp00353z" (PDF) . www-03.ibm.com . Archivado desde el original (PDF) el 2013-01-21 . Consultado el 2022-06-30 .
  12. ^ https://ccsids.net/ccsids.html#ccsid-354. {{cite web}}: Falta o está vacío |title=( ayuda )
  13. ^ abc 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 . Consultado el 22 de abril de 2017 .
  14. ^ "Fortran Automatic Coding System for the IBM 704" (PDF) . IBM . 1956-10-15. p. 49 . Consultado el 15 de septiembre de 2015 .
  15. ^ Harper, Jack (21 de agosto de 2001). «Representación de caracteres IBM 7090/94» . Consultado el 22 de abril de 2017 .
  16. ^ "Sección: Tablas de caracteres en ordenadores BULL" (PDF) . Archivado desde el original (PDF) el 8 de julio de 2011. Consultado el 15 de noviembre de 2010 .
  17. ^ Burroughs B 5500 Manual de referencia ampliado de Algol sobre sistemas de procesamiento de información (PDF) . 1966. pág. B-1.

Lectura adicional

  • Sistema operativo - GCOS 8 Sistema operativo - Guía del programador - Instrucciones de montaje de Bull NovaScale 9000 Series - GCOS 8 (PDF) . Bull SA CEDOC . Noviembre de 2003. 67 A2 RJ78 REV00. Archivado desde el original (PDF) el 12 de febrero de 2015.
  • Bonten, Jo HM (8 de marzo de 2009) [2007]. "Formatos de datos en computadoras antiguas de 48 y 36 bits: caracteres de seis bits". Geldrop, Países Bajos. Archivado desde el original el 16 de junio de 2016. Consultado el 16 de junio de 2016 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=BCD_(codificación_de_caracteres)&oldid=1257894195"