BCD ( decimal codificado en binario ), también llamado BCD alfanumérico , BCD alfanumérico , BCD Intercambio Código , [1] o BCDIC , [1] es una familia de representaciones de números, letras latinas mayúsculas, y algunos caracteres especiales y de control como de seis códigos de caracteres de bits .
Clasificación | Codificaciones latinas básicas alfanuméricas de 6 bits |
---|---|
Sucesor | EBCDIC |
A diferencia de codificaciones posteriores como ASCII , los códigos BCD no estaban estandarizados. Los diferentes fabricantes de computadoras, e incluso diferentes líneas de productos del mismo fabricante, a menudo tenían 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 los 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 con un solo golpe y utiliza varios golpes 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 la tarjeta perforada a un código binario de seis bits mediante la codificación de las filas de dígitos (nueve filas, más sin perforar) en los cuatro bits bajos y las filas de la zona (tres filas, más sin perforar) en la alta. dos bits. [4] El dígito cero (un solo marcado en la fila 0) generalmente se maneja especialmente de alguna manera, y el código del dígito se extendió a los valores del 10 al 15 combinando un dígito en el rango 2-7 con un marcado en la fila 8. IBM aplicó los términos decimal codificado en binario y BCD a las variaciones de los alfamericos BCD utilizados en la mayoría de las primeras computadoras IBM, incluidas las series IBM 1620 , IBM 1400 y los miembros de la arquitectura no decimal de la serie IBM 700/7000 .
Entre los proveedores que usaban BCD estaban 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 (EBCDIC) de 8 bits , 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 esU + 29E7 ⧧ TERMODINÁMICA , pero eso no se encuentra en muchas fuentes, así queEn su lugar, a menudo se usa U + 2021 ‡ DOBLE DAGA . Funcionalmente, esto corresponde alcarácterEBCDIC IRS (ASCII RS ), X'1E '.
El Groupmark o carácter de signo 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 asignó al valorU + 2BD2 ⯒ MARCA DE GRUPO . Funcionalmente, esto corresponde alcarácterEBCDIC IGS (ASCII GS ), X'1D '. Ahora está en Unicode 10.0 en esta posición, pero solo las fuentes Symbola y Unifont lo admiten.
La marca denominativa , por el contrario, no es un carácter BCD. Más bien, es un bit de bandera que se usa para marcar el final de una palabra en algunas computadoras de longitud de palabra variable , como la IBM 1401 .
Variaciones del código BCD
Hay muchas versiones diferentes del código BCD de seis bits. Hay tres categorías principales de diferencia:
- El mapeo de perforaciones de zona a bits de orden superior. Todos los códigos no traducen las perforaciones de zona a un patrón de bits de 00, pero algunos codifican las perforaciones de zona en el orden 12-11-0, conservando el orden alfabético, mientras que otros usan el orden 0-11-12, lo que da como resultado un alfabeto parcialmente invertido.
- El manejo del dígito 0. La traducción sencilla de la forma perforada colocaría el espacio en blanco antes de los dígitos 1–9 y codificaría 0 en otro lugar completamente. Todos los códigos tienen un manejo de casos especiales que traduce el dígito 0 al código binario todo cero (y mueve el espacio en blanco a otra parte), o le da el código binario 001010 (decimal 10) y usa el punzón 8 + 2 en otra parte.
- La asignación de caracteres especiales. Los caracteres asignados a códigos más allá del conjunto alfanumérico básico variaron ampliamente, incluso dentro de un modelo de computadora.
En "países de habla hispana", el carácter "Ñ" no existía en el sistema original, por lo tanto, la mayoría de los fabricantes eligieron "@" : Bull, NCR y Control Data, pero hubo una inconsistencia al fusionar bases de datos a 7 bits Código ASCII, porque en ese sistema de codificación se eligió el carácter "/" , lo que da como resultado 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 más claramente la estructura del 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 hexadecimal 31 o binario '11 0001 '.
Código BCD de 48 caracteres
Las primeras versiones de BCDIC tenían 48 caracteres, ya que se basaban en patrones de perforaciones de tarjetas y en los conjuntos de caracteres de las impresoras, ninguno de los cuales fomentaba tener un número de caracteres de potencia de dos.
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | |||
1x | / | S | T | U | V | W | X | Y | Z | , | % | |||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | * | ||||
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | . | ⌑ |
Esto se basó en un código de tarjeta perforado de 40 caracteres; el original 37 (10 dígitos, 26 letras y en blanco), más tres caracteres comercialmente importantes agregados alrededor de 1932: [1] : 67 guiones menos usados para imprimir saldos acreedores y nombres con guiones, el y también se usa en muchos nombres y direcciones ( Procter & Gamble , Sr. y Sra. Smith) y el asterisco utilizado para sobreimprimir los campos no utilizados al imprimir cheques .
Código IBM 704 BCD
El IBM 704 reordenó el código BCDIC para permitir un orden alfabético normal de clasificación internamente, con 0 antes de 1 y A antes de Z. Podría traducir automáticamente entre esta forma interna y el BCDIC anterior al leer y escribir cintas magnéticas . [10]
La siguiente tabla muestra las asignaciones de código para la computadora IBM 704 . Las posiciones de código no asignadas aparecen como espacios en blanco. [10]
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ||||
1x | Y | A | B | C | D | mi | F | GRAMO | H | I | . | ⌑ | ||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | * | ||||
3 veces | espacio | / | S | T | U | V | W | X | Y | Z | ‡ | , | % |
( y rara vez se usaban caracteres que correspondían a la convención de tarjeta perforada de un dígito 0 con un signo sobrepicado en las filas 12 u 11.)
La siguiente tabla muestra las asignaciones de código para la impresora tipo 716 utilizada comenzando con la computadora IBM 704 y hasta la 7094. [11] La interfaz 704 [b] envió filas de tarjetas perforadas virtuales a esta impresora, dos palabras (72 bits) en una vez, por lo que la asignación de caracteres BCD de 6 bits se realizó mediante software y no se incorporó a la impresora.
Golpe de zona | Golpe de dígitos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 8 + 3 | 8 + 4 | ||
Ninguno | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | - |
12 | + | A | B | C | D | mi | F | GRAMO | H | I | . | ⌑ |
11 | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | * |
0 | 0 | / | S | T | U | V | W | X | Y | Z | , | % |
Se trata de un repertorio de 45 caracteres (sin contar los espacios en blanco, que es manejado especialmente por la impresora), como los caracteres +
, -
y *
están duplicados.
Conjunto de caracteres de Fortran
Hubo alguna variación; IBM 704 Fortran tenía un conjunto diferente de caracteres especiales (conservando solo el signo menos duplicado). [12]
Golpe de zona | Golpe de dígitos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 8 + 3 | 8 + 4 | ||
Ninguno | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | - |
12 | + | A | B | C | D | mi | F | GRAMO | H | I | . | ) |
11 | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | * |
0 | 0 | / | S | T | U | V | W | X | Y | Z | , | ( |
Se usó un código similar para los sucesores de IBM 709 , 7090 y 7094 , [13] pero con algunos de los caracteres especiales reasignados:
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | " | ||||
1x | Y | A | B | C | D | mi | F | GRAMO | H | I | . | ) | ||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | * | ||||
3 veces | espacio | / | S | T | U | V | W | X | Y | Z | ± | , | ( |
Código BCD IBM 1401
El IBM 1401 usó el código todo cero para el espacio en blanco y movió el dígito cero al código 10. Había definido formas de caracteres para todos los valores posibles, con fines de documentación, [14] pero solo 48 de los 63 caracteres que no estaban en blanco eran imprimible, y hubo una variación considerable en la forma en que se representaron en la práctica los otros valores de código (sombreados en la tabla a continuación). Incluso los otros caracteres variaron entre las diferentes cadenas de impresión disponibles para la impresora IBM 1403 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
1x | ¢ | / | S | T | U | V | W | X | Y | Z | ‡ | , | % | = | ' | " |
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | ! | PS | * | ) | ; | Δ |
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | ? | . | ⌑ | ( | < | ⯒ |
Código GBCD
A continuación se muestra la tabla del código GBCD de GE / Honeywell, una variante de BCD. [15]
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [ | # | @ | : | > | ? |
1x | espacio | A | B | C | D | mi | F | GRAMO | H | I | Y | . | ] | ( | < | \ |
2x | ^ | J | K | L | METRO | norte | O | PAG | Q | R | - | PS | * | ) | ; | ' |
3 veces | + | / | S | T | U | V | W | X | Y | Z | _ | , | % | = | " | ! |
Código BCD de Burroughs B5500
La siguiente tabla muestra las asignaciones de código para la computadora Burroughs B5500 , a veces denominada BIC (Código de intercambio de Burroughs). [dieciséis]
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ? | : | > | ≥ |
1x | + | A | B | C | D | mi | F | GRAMO | H | I | . | [ | Y | ( | < | ← |
2x | × | J | K | L | METRO | norte | O | PAG | Q | R | PS | * | - | ) | ; | ≤ |
3 veces | espacio | / | S | T | U | V | W | X | Y | Z | , | % | ≠ | = | ] | " |
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 presencia de dos caracteres # pero ningún carácter + parece incorrecta en esta tabla.] [ Cita requerida ]
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
1x | ␢ | / | S | T | U | V | W | X | Y | Z | ‡ | , | % | γ | \ | ⧻ |
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | ! | # | * | ] | ; | Δ |
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | ? | . | ⌑ | [ | < | ⯒ |
En 0x1A está la marca de registro, que no se propuso por separado debido a su similitud con la doble daga. 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 PTTC / BCD se asignó como página de códigos 355 o CP355 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | S | T | U | V | W | X | Y | Z | ‡ | , | γ | |||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | < | PS | ||||
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | ) | . |
La opción PTTC / BCD H se asignó como página de códigos 357 o CP357 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | ||||
1x | ' | / | S | T | U | V | W | X | Y | Z | ‡ | , | ||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | ! | PS | ||||
3 veces | + | A | B | C | D | mi | F | GRAMO | H | I | ? | . |
La opción de correspondencia PTTC / BCD se asignó como página de códigos 358 o CP358 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ' | ||||
1x | ! | / | S | T | U | V | W | X | Y | Z | ‡ | , | ||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | < | ; | ||||
3 veces | = | A | B | C | D | mi | F | GRAMO | H | I | > | . |
La opción PTTC / BCD Monocase se asignó como página de códigos 359 o CP359 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | S | T | U | V | W | X | Y | Z | , | |||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | |||||
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | . |
La opción PTTC / BCD Duocase se asignó como página de códigos 360 o CP360 .
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | espacio | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | S | T | U | V | W | X | Y | Z | , | |||||
2x | - | J | K | L | METRO | norte | O | PAG | Q | R | PS | |||||
3 veces | Y | A | B | C | D | mi | F | GRAMO | H | I | . |
Ver también
- Decimal codificado en binario
- Código de caracteres de seis bits
- EBCDIC
- SQUOZE
Notas
- ^ En realidad, hay varios códigos de tarjeta, por ejemplo, en 1964 había diez versiones del IBM 026 con juegos de caracteres ligeramente diferentes.
- ^ La interfaz de, por ejemplo, el 7090, es diferente, aunque el software aún debe realizar el mapeo.
Referencias
- ↑ a b c d e Mackenzie, Charles E. (1980). Juegos de caracteres codificados, historia y desarrollo (PDF) . Serie de programación de sistemas (1 ed.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN 77-90165 . ISBN 978-0-201-14460-4 . Archivado desde el original (PDF) el 26 de mayo de 2016 . Consultado el 22 de abril de 2017 . [1]
- ^ Pugh, Emerson W .; Heide, Lars. "ESTRELLAS: Equipo de tarjetas perforadas" . Red de historia global IEEE. Archivado desde el original el 11 de mayo de 2012 . Consultado el 9 de junio de 2012 .
- ^ Pugh, Emerson W. (1995). Construyendo IBM: Modelado e Industria y su Tecnología . Prensa del MIT . págs. 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) . Corporación Burroughs . 1964.
- ^ Control Data Corporation (1965). Códigos / Datos de control Sistema informático 6600 (PDF) .
- ^ "Marca de registro" . Enciclopedia . Revista de PC . Consultado el 9 de abril de 2016 .
- ^ "marca de grupo" . Encyclopedia.com . Consultado el 9 de abril de 2016 .
- ^ Shirriff, Ken. "Propuesta de adición del símbolo de marca de grupo" (PDF) . unicode.org . Consultado el 9 de abril de 2016 .
- ^ a b Manual de funcionamiento de la máquina electrónica de procesamiento de datos IBM 704 (PDF) . IBM . 1955. p. 35. Formulario 24-6661-2 . Consultado el 22 de abril de 2017 .
- ^ Manual de funcionamiento de la máquina electrónica de procesamiento de datos IBM 704 (PDF) . IBM . 1955. p. 58. Formulario 24-6661-2 . Consultado el 22 de abril de 2017 .
- ^ "Sistema de codificación automática Fortran para el IBM 704" (PDF) . IBM . 1956-10-15. pag. 49 . Consultado el 15 de septiembre de 2015 .
- ^ Harper, Jack (21 de agosto de 2001). "Representación de caracteres IBM 7090/94" . Consultado el 22 de abril de 2017 .
- ^ Sistema de procesamiento de datos IBM 1401: Manual de referencia (PDF) . IBM . Abril de 1962. p. 170. A24-1403-5. Archivado desde el original (PDF) el 14 de marzo de 2012.
- ^ "Sección: Tablas de caracteres en computadoras BULL" (PDF) . Archivado desde el original (PDF) en 2011-07-08 . Consultado el 15 de noviembre de 2010 .
- ^ Burroughs B 5500 Information Processing Systems Extended Algol Reference Manual (PDF) . 1966. p. B-1.
Otras lecturas
- Sistema operativo - Sistema operativo GCOS 8 - Guía del programador - Instrucciones de montaje de la serie Bull NovaScale 9000 - GCOS 8 (PDF) . Bula 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" . Archivado desde el original el 16 de junio de 2016 . Consultado el 16 de junio de 2016 .