ASCII
ASCII (ASS-kee), abreviado de Código estándar estadounidense para el intercambio de información, es un estándar de codificación de caracteres para la comunicación electrónica. Los códigos ASCII representan texto en computadoras, equipos de telecomunicaciones y otros dispositivos. Debido a las limitaciones técnicas de los sistemas informáticos en el momento en que se inventó, ASCII tiene solo 128 puntos de código, de los cuales solo 95 son caracteres imprimibles, lo que limitó severamente su alcance. En cambio, todos los sistemas informáticos modernos utilizan Unicode, que tiene millones de puntos de código, pero los primeros 128 de estos son los mismos que el conjunto ASCII.
La Autoridad de Números Asignados en Internet (IANA) prefiere el nombre US-ASCII para esta codificación de caracteres.
ASCII es uno de los hitos de IEEE.
Resumen
ASCII se desarrolló a partir del código telegráfico. Su primer uso comercial fue como un código de teleimpresora de siete bits promovido por los servicios de datos de Bell. El trabajo en el estándar ASCII comenzó en mayo de 1961, con la primera reunión del subcomité X3.2 de la American Standards Association (ASA) (ahora el American National Standards Institute o ANSI). La primera edición del estándar se publicó en 1963, se sometió a una revisión importante durante 1967 y experimentó su actualización más reciente durante 1986. En comparación con los códigos telegráficos anteriores, el código Bell propuesto y ASCII se ordenaron para una clasificación más conveniente (es decir, alfabetización).) de listas y funciones añadidas para dispositivos que no sean teletipos.
El uso del formato ASCII para Network Interchange se describió en 1969. Ese documento se elevó formalmente a un estándar de Internet en 2015.
Originalmente basado en el alfabeto inglés (moderno), ASCII codifica 128 caracteres específicos en números enteros de siete bits, como se muestra en el cuadro ASCII anterior. Noventa y cinco de los caracteres codificados son imprimibles: estos incluyen los dígitos 0 a 9, letras minúsculas a a z, letras mayúsculas A a Z y signos de puntuación. Además, la especificación ASCII original incluía 33 códigos de control sin impresión que se originaron con máquinas de teletipo; la mayoría de estos ahora están obsoletos, aunque algunos todavía se usan comúnmente, como el retorno de carro, el salto de línea y los códigos de tabulación.
Por ejemplo, la i minúscula se representaría en la codificación ASCII mediante 1101001 binario = 69 hexadecimal (i es la novena letra) = 105 decimal.
A pesar de ser un estándar estadounidense, ASCII no tiene un punto de código para el centavo (¢). Tampoco admite términos en inglés con signos diacríticos, como currículum y jalapeño, ni nombres propios con signos diacríticos, como Beyoncé.
Historia
El Código Estándar Estadounidense para el Intercambio de Información (ASCII) fue desarrollado bajo los auspicios de un comité de la Asociación Estadounidense de Estándares (ASA), llamado comité X3, por su subcomité X3.2 (luego X3L2), y más tarde por ese grupo de trabajo X3.2.4 del subcomité (ahora INCITS). La ASA más tarde se convirtió en el Instituto de Normas de los Estados Unidos de América (USASI), y finalmente se convirtió en el Instituto Nacional de Normas de los Estados Unidos (ANSI).
Con los otros caracteres especiales y códigos de control completados, ASCII se publicó como ASA X3.4-1963, dejando 28 posiciones de código sin ningún significado asignado, reservadas para estandarización futura, y un código de control sin asignar. Hubo cierto debate en ese momento sobre si debería haber más caracteres de control en lugar del alfabeto en minúsculas. La indecisión no duró mucho: durante mayo de 1963, el Grupo de Trabajo del CCITT sobre el Nuevo Alfabeto Telegráfico propuso asignar caracteres en minúsculas a los palos 6 y 7, y la Organización Internacional de Normalización TC 97 SC 2 votó durante octubre a favor de incorporar el cambio en su proyecto de norma. El grupo de trabajo X3.2.4 votó su aprobación para el cambio a ASCII en su reunión de mayo de 1963. Ubicar las letras minúsculas en palos 6 y 7 hizo que los caracteres difirieran en el patrón de bits de las mayúsculas en un solo bit, lo que simplificó la coincidencia de caracteres que no distingue entre mayúsculas y minúsculas y la construcción de teclados e impresoras.
El comité X3 realizó otros cambios, incluidos otros caracteres nuevos (los caracteres de llave y barra vertical), cambió el nombre de algunos caracteres de control (SOM pasó a ser el comienzo del encabezado (SOH)) y movió o eliminó otros (se eliminó RU). Posteriormente, ASCII se actualizó como USAS X3.4-1967, luego USAS X3.4-1968, ANSI X3.4-1977 y, finalmente, ANSI X3.4-1986.
Revisiones del estándar ASCII:
- ASA X3.4-1963
- ASA X3.4-1965 (aprobado, pero no publicado, sin embargo utilizado por IBM 2260 & 2265 Display Stations y IBM 2848 Display Control)
- USAS X3.4-1967
- USAS X3.4-1968
- ANSI X3.4-1977
- ANSI X3.4-1986
- ANSI X3.4-1986 (R1992)
- ANSI X3.4-1986 (R1997)
- ANSI INCITS 4-1986 (R2002)
- ANSI INCITS 4-1986 (R2007)
- (ANSI) INCITS 4-1986[R2012]
- (ANSI) INCITS 4-1986[R2017]
En el estándar X3.15, el comité X3 también abordó cómo se debe transmitir ASCII (primero el bit menos significativo) y cómo se debe grabar en cinta perforada. Propusieron un estándar de 9 pistas para cinta magnética e intentaron lidiar con algunos formatos de tarjetas perforadas.
Consideraciones de diseño
Ancho de bits
El subcomité X3.2 diseñó ASCII basándose en los sistemas de codificación de teleimpresores anteriores. Al igual que otras codificaciones de caracteres, ASCII especifica una correspondencia entre patrones de bits digitales y símbolos de caracteres (es decir, grafemas y caracteres de control). Esto permite que los dispositivos digitales se comuniquen entre sí y procesen, almacenen y comuniquen información orientada a caracteres, como el lenguaje escrito. Antes de que se desarrollara ASCII, las codificaciones en uso incluían 26 caracteres alfabéticos, 10 dígitos numéricos y de 11 a 25 símbolos gráficos especiales. Para incluir todos estos, y controlar los caracteres compatibles con el estándar del Comité Consultatif International Téléphonique et Télégraphique (CCITT) International Telegraph Alphabet No. 2 (ITA2) de 1924, FIELDATA (1956) y EBCDIC temprano (1963), se crearon más de 64 códigos. requerido para ASCII.
ITA2 a su vez se basó en el código telegráfico de 5 bits que Émile Baudot inventó en 1870 y patentó en 1874.
El comité debatió la posibilidad de una función de desplazamiento (como en ITA2), que permitiría representar más de 64 códigos mediante un código de seis bits. En un código desplazado, algunos códigos de caracteres determinan opciones entre opciones para los siguientes códigos de caracteres. Permite la codificación compacta, pero es menos fiable para la transmisión de datos, ya que un error en la transmisión del código de cambio normalmente hace que gran parte de la transmisión sea ilegible. El comité de estándares decidió no cambiar, por lo que ASCII requería al menos un código de siete bits.
El comité consideró un código de ocho bits, ya que ocho bits (octetos) permitirían que dos patrones de cuatro bits codificaran eficientemente dos dígitos con decimal codificado en binario. Sin embargo, requeriría que todas las transmisiones de datos enviaran ocho bits cuando siete podrían ser suficientes. El comité votó a favor de usar un código de siete bits para minimizar los costos asociados con la transmisión de datos. Dado que la cinta perforada en ese momento podía grabar ocho bits en una posición, también permitía un bit de paridad para la verificación de errores si se deseaba. Las máquinas de ocho bits (con octetos como tipo de datos nativo) que no usaban la verificación de paridad generalmente configuraban el octavo bit en 0.
Organización interna
El código en sí se modeló de modo que la mayoría de los códigos de control estuvieran juntos y todos los códigos gráficos estuvieran juntos, para facilitar la identificación. Los primeros dos llamados palos ASCII (32 posiciones) estaban reservados para caracteres de control. El "espacio" el carácter tenía que venir antes que los gráficos para facilitar la clasificación, por lo que se convirtió en la posición 20hex; por la misma razón, muchos signos especiales usados comúnmente como separadores se colocaron antes de los dígitos. El comité decidió que era importante admitir alfabetos de 64 caracteres en mayúsculas y eligió el patrón ASCII para que pudiera reducirse fácilmente a un conjunto de códigos gráficos utilizables de 64 caracteres, como se hizo en el código DEC SIXBIT (1963). Por lo tanto, las letras minúsculas no se intercalaron con las mayúsculas. Para mantener las opciones disponibles para letras minúsculas y otros gráficos, los códigos especiales y numéricos se organizaron antes de las letras, y la letra A se colocó en la posición 41hex para que coincida con el borrador. del estándar británico correspondiente. Los dígitos del 0 al 9 tienen el prefijo 011, pero los 4 bits restantes corresponden a sus respectivos valores en binario, lo que facilita la conversión con decimal codificado en binario.
Muchos de los caracteres no alfanuméricos se colocaron para corresponder a su posición desplazada en las máquinas de escribir; una sutileza importante es que se basaron en máquinas de escribir mecánicas, no en máquinas de escribir eléctricas. Las máquinas de escribir mecánicas siguieron el estándar de facto establecido por la Remington No. 2 (1878), la primera máquina de escribir con tecla shift, y los valores desplazados de 23456789-
fueron "#$ %_&'()
: las primeras máquinas de escribir omitían 0 y 1, usando O (letra mayúscula o) y l (letra minúscula L) en su lugar, pero 1!
y 0)
pares se convirtió en estándar una vez que 0 y 1 se volvieron comunes. Por lo tanto, en ASCII !"#$%
se colocaron en el segundo palo, en las posiciones 1 a 5, correspondientes a los dígitos 1 a 5 en el palo adyacente. Sin embargo, los paréntesis no podían corresponder a 9 y 0 porque el lugar correspondiente a 0 lo ocupaba el carácter de espacio. Esto se solucionó eliminando _
(guion bajo) de 6 y desplazando los caracteres restantes, que correspondían a muchas máquinas de escribir europeas que colocaban los paréntesis con 8 y 9. Esta discrepancia con las máquinas de escribir condujo a teclados de pares de bits, en particular el Teletype Model 33, que usaba el diseño desplazado a la izquierda correspondiente a ASCII, de manera diferente a las máquinas de escribir mecánicas tradicionales.
Las máquinas de escribir eléctricas, en particular la IBM Selectric (1961), usaban un diseño algo diferente que se ha convertido de facto en el estándar de las computadoras (siguiendo la IBM PC (1981), especialmente el Modelo M (1984)) y, por lo tanto, cambiaban los valores de los símbolos en los teclados modernos no se corresponden tan estrechamente con la tabla ASCII como lo hacían los teclados anteriores. El par /?
también data del No. 2, y los pares ,<.>
se usaron en algunos teclados (otros, incluido el No. 2, no no cambiar ,
(coma) o .
(punto) para que puedan usarse en mayúsculas sin cambiar). Sin embargo, ASCII dividió el par ;:
(que data del número 2) y reorganizó los símbolos matemáticos (convenciones variadas, comúnmente -* =+
) a :*;+ -=.
Algunos caracteres de máquina de escribir comunes en ese momento no se incluyeron, en particular ½ ¼ ¢
, mientras que ^ ` ~
se incluyeron como signos diacríticos para uso internacional, y < >
para uso matemático, junto con los caracteres de línea simple |
(además de los /
comunes). El símbolo @ no se usó en Europa continental y el comité esperaba que fuera reemplazado por un À acentuado en la variación francesa, por lo que @ se colocó en la posición 40hex, justo antes de la letra A.
Los códigos de control que se consideraron esenciales para la transmisión de datos fueron el inicio del mensaje (SOM), el final de la dirección (EOA), el final del mensaje (EOM), el final de la transmisión (EOT), "¿quién eres?& #34; (WRU), "¿eres tú?" (RU), un control de dispositivo reservado (DC0), inactividad síncrona (SYNC) y reconocimiento (ACK). Estos se colocaron para maximizar la distancia de Hamming entre sus patrones de bits.
Orden de caracteres
El orden del código ASCII también se denomina orden ASCIIbetical. A veces, la recopilación de datos se realiza en este orden en lugar de en el orden "estándar" orden alfabético (secuencia de clasificación). Las principales desviaciones en el orden ASCII son:
- Todas las maletas aparecen antes de las letras minúsculas; por ejemplo, "Z" precede "a"
- Los dígitos y muchas puntuaciones vienen antes de las letras
Un orden intermedio convierte las letras mayúsculas en minúsculas antes de comparar los valores ASCII.
Grupos de personajes
Personajes de control
ASCII reserva los primeros 32 códigos (números del 0 al 31 decimal) para caracteres de control: códigos originalmente destinados a no representar información imprimible, sino a dispositivos de control (como impresoras) que utilizan ASCII, o para proporcionar metadatos. información sobre flujos de datos como los almacenados en cinta magnética.
Por ejemplo, el carácter 10 representa el "salto de línea" (que hace que una impresora avance su papel), y el carácter 8 representa "retroceso". RFC 2822 hace referencia a los caracteres de control que no incluyen retorno de carro, avance de línea o espacios en blanco como caracteres de control que no son espacios en blanco. Excepto por los caracteres de control que prescriben el formato elemental orientado a líneas, ASCII no define ningún mecanismo para describir la estructura o apariencia del texto dentro de un documento. Otros esquemas, como lenguajes de marcado, página de direcciones y diseño y formato de documentos.
El estándar ASCII original usaba solo frases descriptivas breves para cada carácter de control. La ambigüedad que esto provocaba a veces era intencional, por ejemplo, cuando un carácter se usaba de forma ligeramente diferente en un enlace de terminal que en un flujo de datos, y a veces accidental, por ejemplo, con el significado de "eliminar".
Probablemente, el dispositivo individual más influyente que afectó la interpretación de estos caracteres fue el Teletype Model 33 ASR, que era un terminal de impresión con una opción de lector/perforador de cinta de papel disponible. La cinta de papel fue un medio muy popular para el almacenamiento de programas a largo plazo hasta la década de 1980, menos costoso y, en cierto modo, menos frágil que la cinta magnética. En particular, las asignaciones de máquina Teletype Model 33 para los códigos 17 (control-Q, DC1, también conocido como XON), 19 (control-S, DC3, también conocido como XOFF) y 127 (eliminar) se convirtieron en estándares de facto. El Model 33 también se destacó por tomar la descripción de control-G (código 7, BEL, que significa alerta audible al operador) literalmente, ya que la unidad contenía una campana real que sonaba cuando recibía un carácter BEL. Debido a que la parte superior de la tecla O también mostraba un símbolo de flecha hacia la izquierda (de ASCII-1963, que tenía este carácter en lugar de un guión bajo), un uso no conforme del código 15 (control-O, cambiar) se interpreta como "eliminar personaje anterior" también fue adoptado por muchos de los primeros sistemas de tiempo compartido, pero finalmente se descuidó.
Cuando un ASR Teletype 33 equipado con el lector automático de cintas de papel recibió un control-S (XOFF, una abreviatura de transmisión desactivada), provocó que el lector de cintas se detuviera; recibir control-Q (XON, transmisión activada) hizo que el lector de cinta se reanudara. Esta llamada técnica de control de flujo fue adoptada por varios de los primeros sistemas operativos de computadora como un 'apretón de manos'. señal de advertencia a un remitente para que detenga la transmisión debido a un desbordamiento de búfer inminente; persiste hasta el día de hoy en muchos sistemas como una técnica de control de salida manual. En algunos sistemas, control-S conserva su significado, pero control-Q se reemplaza por un segundo control-S para reanudar la salida.
El 33 ASR también podría configurarse para emplear control-R (DC2) y control-T (DC4) para iniciar y detener la perforación de la cinta; en algunas unidades equipadas con esta función, la letra del carácter de control correspondiente en la tecla encima de la letra era TAPE y TAPE respectivamente.
Eliminar frente a retroceso
El Teletipo no podía mover su cabeza de tipo hacia atrás, por lo que no tenía una tecla en su teclado para enviar una BS (retroceso). En cambio, había una tecla marcada como RUB OUT que enviaba el código 127 (DEL). El propósito de esta tecla era borrar errores en una cinta de papel ingresada manualmente: el operador tenía que presionar un botón en el perforador de la cinta para respaldarlo, luego escribir el borrado, que perforó todos los agujeros y reemplazó el error con un carácter que estaba destinado a ser ignorado. Los teletipos se usaban comúnmente con las computadoras menos costosas de Digital Equipment Corporation (DEC); estos sistemas tenían que usar qué teclas estaban disponibles y, por lo tanto, se asignó el código DEL para borrar el carácter anterior. Debido a esto, los terminales de video DEC (por defecto) enviaban el código DEL para la tecla marcada como "Retroceso" mientras que la tecla separada marcada como "Eliminar" envió una secuencia de escape; muchos otros terminales de la competencia enviaron un código BS para la tecla de retroceso.
El controlador de terminal de Unix solo podía usar un código para borrar el carácter anterior, este podía establecerse en BS o DEL, pero no en ambos, lo que generaba situaciones recurrentes de ambigüedad en las que los usuarios tenían que decidir según en qué terminal estaban usando (shells que permiten la edición de líneas, como ksh, bash y zsh, comprenda ambos). La suposición de que ninguna tecla envió un código BS permitió que control+H se usara para otros fines, como la "ayuda" comando de prefijo en GNU Emacs.
Escapar
A muchos más de los códigos de control se les han asignado significados bastante diferentes de los originales. El "escape" (ESC, código 27), por ejemplo, estaba destinado originalmente a permitir el envío de otros caracteres de control como literales en lugar de invocar su significado, una "secuencia de escape". Este es el mismo significado de "escape" encontrado en codificaciones de URL, cadenas de lenguaje C y otros sistemas donde ciertos caracteres tienen un significado reservado. Con el tiempo, esta interpretación ha sido cooptada y finalmente ha cambiado.
En el uso moderno, un ESC enviado a el terminal generalmente indica el inicio de una secuencia de comando generalmente en la forma del llamado "código de escape ANSI" (o, más correctamente, un "Introductor de secuencia de control") de ECMA-48 (1972) y sus sucesores, comenzando con ESC seguido de "[" (corchete izquierdo) carácter. Por el contrario, un ESC enviado desde el terminal se usa con mayor frecuencia como un carácter fuera de banda para terminar una operación o un modo especial, como en los editores de texto TECO y vi. En la interfaz gráfica de usuario (GUI) y los sistemas de ventanas, ESC generalmente hace que una aplicación cancele su operación actual o salga (terminar) por completo.
Fin de línea
La ambigüedad inherente de muchos caracteres de control, combinada con su uso histórico, creaba problemas al transferir "texto sin formato" archivos entre sistemas. El mejor ejemplo de esto es el problema de la nueva línea en varios sistemas operativos. Las máquinas de teletipo requerían que una línea de texto terminara con "retorno de carro" (que mueve el cabezal de impresión al principio de la línea) y "salto de línea" (que hace avanzar el papel una línea sin mover el cabezal de impresión). El nombre "retorno de carro" proviene del hecho de que en una máquina de escribir manual el carro que sostiene el papel se mueve mientras que las barras de tipos que golpean la cinta permanecen estacionarias. Todo el carro tenía que ser empujado (devuelto) hacia la derecha para colocar el papel en la siguiente línea.
Los sistemas operativos DEC (OS/8, RT-11, RSX-11, RSTS, TOPS-10, etc.) usaban ambos caracteres para marcar el final de una línea para que el dispositivo de la consola (originalmente máquinas de teletipo) funcionara. Para cuando los llamados "TTY de vidrio" (más tarde llamados CRT o "terminales tontas"), la convención estaba tan bien establecida que la compatibilidad con versiones anteriores requería continuar siguiéndola. Cuando Gary Kildall creó CP/M, se inspiró en algunas de las convenciones de la interfaz de línea de comandos utilizadas en el sistema operativo RT-11 de DEC.
Hasta la introducción de PC DOS en 1981, IBM no tuvo influencia en esto porque sus sistemas operativos de la década de 1970 usaban codificación EBCDIC en lugar de ASCII, y estaban orientados hacia la entrada de tarjeta perforada y la salida de impresora de línea en la que se basa el concepto de &# 34;retorno de carro" no tenía sentido. El PC DOS de IBM (también comercializado como MS-DOS por Microsoft) heredó la convención en virtud de estar basada libremente en CP/M, y Windows a su vez la heredó de MS-DOS.
Requerir dos caracteres para marcar el final de una línea introduce una complejidad y ambigüedad innecesarias en cuanto a cómo interpretar cada carácter cuando se encuentra solo. Para simplificar las cosas, los flujos de datos de texto sin formato, incluidos los archivos, en Multics usaban salto de línea (LF) solo como un terminador de línea. Los sistemas Unix y similares a Unix, y los sistemas Amiga, adoptaron esta convención de Multics. Por otro lado, el sistema operativo Macintosh original, Apple DOS y ProDOS usaban el retorno de carro (CR) solo como un terminador de línea; sin embargo, dado que Apple ahora ha reemplazado estos sistemas operativos obsoletos con el sistema operativo macOS basado en Unix, ahora también usan salto de línea (LF). El Radio Shack TRS-80 también usó un CR solitario para terminar las líneas.
Las computadoras conectadas a ARPANET incluían máquinas que ejecutaban sistemas operativos como TOPS-10 y TENEX que usaban terminaciones de línea CR-LF; máquinas que ejecutan sistemas operativos como Multics que usan finales de línea LF; y máquinas que ejecutan sistemas operativos como OS/360 que representaban las líneas como un conteo de caracteres seguido de los caracteres de la línea y que usaban codificación EBCDIC en lugar de ASCII. El protocolo Telnet definió un ASCII "Terminal virtual de red" (NVT), de modo que las conexiones entre hosts con diferentes convenciones de finalización de línea y juegos de caracteres puedan admitirse mediante la transmisión de un formato de texto estándar a través de la red. Telnet usó ASCII junto con terminaciones de línea CR-LF, y el software que usa otras convenciones se traduciría entre las convenciones locales y la NVT. El Protocolo de transferencia de archivos adoptó el protocolo Telnet, incluido el uso de la Terminal virtual de red, para usar al transmitir comandos y transferir datos en el modo ASCII predeterminado. Esto agrega complejidad a las implementaciones de esos protocolos y a otros protocolos de red, como los que se usan para el correo electrónico y la World Wide Web, en sistemas que no usan la convención de finalización de línea CR-LF de NVT.
Fin del archivo/transmisión
El monitor PDP-6 y su sucesor PDP-10, TOPS-10, usaban control-Z (SUB) como una indicación de fin de archivo para la entrada desde un terminal. Algunos sistemas operativos, como CP/M, rastrearon la longitud del archivo solo en unidades de bloques de disco y usaron control-Z para marcar el final del texto real en el archivo. Por estas razones, EOF, o fin de archivo, se usó coloquial y convencionalmente como un acrónimo de tres letras para control-Z en lugar de SUBstitute. El código de fin de texto (ETX), también conocido como control-C, era inapropiado por una variedad de razones, mientras que usar Z como código de control para finalizar un archivo es análogo a su posición al final del alfabeto, y sirve como una ayuda mnemotécnica muy conveniente. Una convención históricamente común y aún predominante utiliza la convención de código ETX para interrumpir y detener un programa a través de un flujo de datos de entrada, generalmente desde un teclado.
En la biblioteca C y las convenciones de Unix, el carácter nulo se usa para terminar cadenas de texto; tales cadenas terminadas en nulo se pueden conocer en abreviatura como ASCIZ o ASCIIZ, donde aquí Z significa 'cero'.
Cuadro de códigos de control
binario | Oct | Dec | Hex | Abreviatura | Fotos de Control Unicode | Notación profesional | C secuencia de escape | Nombre (1967) | ||
---|---|---|---|---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||||||
000 | 000 | 0 | 00 | NULL | NUL | . | ^@ | Null | ||
000 0001 | 001 | 1 | 01 | SOM | SOH | ␁ | ^ A | Inicio de Heading | ||
000 0010 | 002 | 2 | 02 | EOA | STX | ␂ | ^ B | Inicio del texto | ||
000 0011 | 003 | 3 | 03 | EOM | ETX | ␃ | ^C | Fin del texto | ||
000 0100 | 004 | 4 | 04 | EOT | ␄ | ^D | Fin de la transmisión | |||
000 0101 | 005 | 5 | 05 | WRU | ENQ | ␅ | ^ E | Pregunta | ||
000 0110 | 006 | 6 | 06 | RU | ACK | ␆ | ^ F | Reconocimiento | ||
000 0111 | 007 | 7 | 07 | BELL | BEL | ␇ | ^ G | a | Bell | |
000 | 010 | 8 | 08 | FE0 | BS | ␈ | ^ H | b | Backspace | |
000 1001 | 011 | 9 | 09 | HT/SK | HT | ␉ | ^ I | t | Tab horizontal | |
1.000, 1010 | 012 | 10 | 0A | LF | ␊ | ^J | n | Línea de alimentación | ||
000 1011 | 013 | 11 | 0B | VTAB | VT | ␋ | ^K | v | Tab vertical | |
000 | 014 | 12 | 0C | FF | ␌ | ^ L | f | Forma Feed | ||
000 1101 | 015 | 13 | 0D | CR | . | ^M | r | Carriage Return | ||
000 1110 | 016 | 14 | 0E | SO | ␎ | ^ N | Cambio | |||
000 1111 | 017 | 15 | 0F | SI | ␏ | ^ O | Cambio | |||
001 0000 | 020 | 16 | 10 | DC0 | DLE | ␐ | ^P | Enlace de datos Escape | ||
001 0001 | 021 | 17 | 11 | DC1 | ␑ | ^ Q | Control de dispositivos 1 (a menudo XON) | |||
001 0010 | 022 | 18 | 12 | DC2 | ␒ | ^ R | Control de dispositivos 2 | |||
001 0011 | 023 | 19 | 13 | DC3 | ␓ | ^ S | Control de dispositivos 3 (a menudo XOFF) | |||
001 0100 | 024 | 20 | 14 | DC4 | ␔ | ^ T | Control de dispositivos 4 | |||
001 0101 | 025 | 21 | 15 | ERR | NAK | ␕ | ^ U | Reconocimiento negativo | ||
001 0110 | 026 | 22 | 16 | SYNC | SYN | ␖ | ^V | Sincrónico Idle | ||
001 0111 | 027 | 23 | 17 | LEM | ETB | ␗ | ^ W | Fin del bloque de transmisión | ||
001 1000 | 030 | 24 | 18 | S0 | CAN | ␘ | ^ X | Cancelar | ||
001 1001 | 031 | 25 | 19 | S1 | EM | ␙ | ^ Y | Fin del Medio | ||
001, 1010 | 032 | 26 | 1A | S2 | SS | SUB | ␚ | ^Z | Substituto | |
001 1011 | 033 | 27 | 1B | S3 | ESC | ␛ | ^ | e | Escape | |
001 1100 | 034 | 28 | 1C | S4 | SM | ␜ | ^ | Separador de archivos | ||
001 1101 | 035 | 29 | 1D | S5 | SG | ␝ | ^] | Separador de grupo | ||
001 1110 | 036 | 30 | 1E | S6 | RS | ␞ | ^ | Separador de discos | ||
001 1111 | 037 | 31 | 1F | S7 | EE.UU. | ␟ | ^_ | Separador de unidad | ||
111 1111 | 177 | 127 | 7F | DEL | ␡ | ^? | Suprimir |
Los equipos especializados pueden utilizar otras representaciones, por ejemplo, gráficos ISO 2047 o números hexadecimales.
Caracteres imprimibles
Los códigos 20hex a 7Ehex, conocidos como caracteres imprimibles, representan letras, dígitos, signos de puntuación y algunos símbolos misceláneos. Hay 95 caracteres imprimibles en total.
Código 20hex, el "espacio" carácter, denota el espacio entre palabras, como lo produce la barra espaciadora de un teclado. Dado que el carácter de espacio se considera un gráfico invisible (en lugar de un carácter de control), se incluye en la siguiente tabla en lugar de en la sección anterior.
El código 7Fhex corresponde al código no imprimible "eliminar" (DEL) carácter de control y por lo tanto se omite de este cuadro; está cubierto en el cuadro de la sección anterior. Las versiones anteriores de ASCII usaban la flecha hacia arriba en lugar del signo de intercalación (5Ehex) y la flecha hacia la izquierda en lugar del guión bajo (5Fhex).
binario | Oct | Dec | Hex | Glyph | ||
---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||
010 0000 | 040 | 32 | 20 | espacio | ||
010 0001 | 041 | 33 | 21 | ! | ||
010 0010 | 042 | 34 | 22 | " | ||
010 0011 | 043 | 35 | 23 | # | ||
010 0100 | 044 | 36 | 24 | $ | ||
0101 | 045 | 37 | 25 | % | ||
010 0110 | 046 | 38 | 26 | " | ||
010 0111 | 047 | 39 | 27 | ' | ||
010 1000 | 050 | 40 | 28 | () | ||
010 1001 | 051 | 41 | 29 | ) | ||
1010 | 052 | 42 | 2A | * | ||
010 1011 | 053 | 43 | 2B | + | ||
010 1100 | 054 | 44 | 2C | , | ||
010 1101 | 055 | 45 | 2D | - | ||
010 1110 | 056 | 46 | 2E | . | ||
010 1111 | 057 | 47 | 2F | / | ||
011 0000 | 060 | 48 | 30 | 0 | ||
011 0001 | 061 | 49 | 31 | 1 | ||
011 0010 | 062 | 50 | 32 | 2 | ||
011 0011 | 063 | 51 | 33 | 3 | ||
011 0100 | 064 | 52 | 34 | 4 | ||
011 0101 | 065 | 53 | 35 | 5 | ||
011 0110 | 066 | 54 | 36 | 6 | ||
011 0111 | 067 | 55 | 37 | 7 | ||
011 1000 | 070 | 56 | 38 | 8 | ||
011 1001 | 071 | 57 | 39 | 9 | ||
011, 1010 | 072 | 58 | 3A | : | ||
011 1011 | 073 | 59 | 3B | ; | ||
011 1100 | 074 | 60 | 3C | . | ||
011 1101 | 075 | 61 | 3D | = | ||
011 1110 | 076 | 62 | 3E | ■ | ||
011 1111 | 077 | 63 | 3F | ? | ||
100 0000 | 100 | 64 | 40 | @ | ` | @ |
100 0001 | 101 | 65 | 41 | A | ||
100 0010 | 102 | 66 | 42 | B | ||
100 0011 | 103 | 67 | 43 | C | ||
100 0100 | 104 | 68 | 44 | D | ||
100 0101 | 105 | 69 | 45 | E | ||
100 0110 | 106 | 70 | 46 | F | ||
100 0111 | 107 | 71 | 47 | G | ||
100 1000 | 110 | 72 | 48 | H | ||
100 1001 | 111 | 73 | 49 | I | ||
100, 1010 | 112 | 74 | 4A | J | ||
100 1011 | 113 | 75 | 4B | K | ||
100 1100 | 114 | 76 | 4C | L | ||
100 1101 | 115 | 77 | 4D | M | ||
100 1110 | 116 | 78 | 4E | N | ||
100 1111 | 117 | 79 | 4F | O | ||
101 0000 | 120 | 80 | 50 | P | ||
101 0001 | 121 | 81 | 51 | Q | ||
101 0010 | 122 | 82 | 52 | R | ||
101 0011 | 123 | 83 | 53 | S | ||
101 0100 | 124 | 84 | 54 | T | ||
101 0101 | 125 | 85 | 55 | U | ||
101 0110 | 126 | 86 | 56 | V | ||
101 0111 | 127 | 87 | 57 | W | ||
101 1000 | 130 | 88 | 58 | X | ||
101 1001 | 131 | 89 | 59 | Y | ||
10, 1010 | 132 | 90 | 5A | Z | ||
101 1011 | 133 | 91 | 5B | [ | ||
101 1100 | 134 | 92 | 5C | ~ | ||
101 1101 | 135 | 93 | 5D | ] | ||
101 1110 | 136 | 94 | 5E | ↑ | ^ | |
101 1111 | 137 | 95 | 5F | ← | ¿Qué? | |
110 0000 | 140 | 96 | 60 | @ | ` | |
110 0001 | 141 | 97 | 61 | a | ||
110 0010 | 142 | 98 | 62 | b | ||
110 0011 | 143 | 99 | 63 | c | ||
110 0100 | 144 | 100 | 64 | d | ||
110 0101 | 145 | 101 | 65 | e | ||
110 0110 | 146 | 102 | 66 | f | ||
110 0111 | 147 | 103 | 67 | g | ||
110 1000 | 150 | 104 | 68 | h | ||
110 1001 | 151 | 105 | 69 | i | ||
10, 1010 | 152 | 106 | 6A | j | ||
110 1011 | 153 | 107 | 6B | k | ||
110 1100 | 154 | 108 | 6C | l | ||
110 1101 | 155 | 109 | 6D | m | ||
110 1110 | 156 | 110 | 6E | n | ||
110 1111 | 157 | 111 | 6F | o | ||
111 0000 | 160 | 112 | 70 | p | ||
111 0001 | 161 | 113 | 71 | q | ||
111 0010 | 162 | 114 | 72 | r | ||
111 0011 | 163 | 115 | 73 | s | ||
111 0100 | 164 | 116 | 74 | t | ||
111 0101 | 165 | 117 | 75 | u | ||
111 0110 | 166 | 118 | 76 | v | ||
111 0111 | 167 | 119 | 77 | w | ||
111.000 | 170 | 120 | 78 | x | ||
111 1001 | 171 | 121 | 79 | Sí. | ||
111, 1010 | 172 | 122 | 7A | z | ||
111 1011 | 173 | 123 | 7B | {} | ||
111 1100 | 174 | 124 | 7C | ACK | ¬ | Silencio |
111 1101 | 175 | 125 | 7D | } | ||
111 1110 | 176 | 126 | 7E | ESC | Silencio | ~ |
Conjunto de personajes
ASCII (1977/1986) | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0x | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
1x | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | SM | SG | RS | EE.UU. |
2x | SP | ! | " | # | $ | % | " | ' | () | ) | * | + | , | - | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | . | = | ■ | ? |
4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | ] | ^ | ¿Qué? | |
6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7x | p | q | r | s | t | u | v | w | x | Sí. | z | {} | Silencio | } | ~ | DEL |
Modificado o añadido en la versión 1963 Modificado tanto en versión 1963 como en 1965 |
Uso
ASCII se utilizó comercialmente por primera vez en 1963 como un código de teleimpresora de siete bits para American Telephone & Red TWX (TeletypeWriter eXchange) de Telegraph. TWX usó originalmente el anterior ITA2 de cinco bits, que también fue utilizado por el sistema de teleimpresora Telex de la competencia. Bob Bemer introdujo características como la secuencia de escape. Su colega británico Hugh McGregor Ross ayudó a popularizar este trabajo; según Bemer, "tanto es así que el código que se convertiría en ASCII se llamó por primera vez Bemer-Ross Code en Europa".;. Debido a su extenso trabajo sobre ASCII, Bemer ha sido llamado "el padre de ASCII".
El 11 de marzo de 1968, el presidente de los Estados Unidos, Lyndon B. Johnson, ordenó que todas las computadoras compradas por el gobierno federal de los Estados Unidos fueran compatibles con ASCII, declarando:
También he aprobado recomendaciones del Secretario de Comercio [Luther H. Hodges] sobre normas para registrar el Código Estándar de Intercambio de Información sobre cintas magnéticas y cintas de papel cuando se utilizan en operaciones informáticas. Todas las computadoras y las configuraciones de equipo conexas introducidas en el inventario del Gobierno Federal en y después del 1 de julio de 1969, deben tener la capacidad de utilizar el código estándar para el intercambio de información y los formatos prescritos por las normas de cinta magnética y cinta de papel cuando se utilizan estos medios.
ASCII fue la codificación de caracteres más común en la World Wide Web hasta diciembre de 2007, cuando la codificación UTF-8 la superó; UTF-8 es retrocompatible con ASCII.
Variantes y derivaciones
A medida que la tecnología informática se extendió por todo el mundo, diferentes organismos y empresas de normalización desarrollaron muchas variaciones de ASCII para facilitar la expresión de idiomas distintos del inglés que utilizaban alfabetos romanos. Se podrían clasificar algunas de estas variaciones como "extensiones ASCII", aunque algunos usan incorrectamente ese término para representar todas las variantes, incluidas aquellas que no conservan el mapa de caracteres ASCII en el rango de 7 bits. Además, las extensiones ASCII también se han etiquetado erróneamente como ASCII.
Códigos de 7 bits
Desde el principio de su desarrollo, ASCII pretendía ser solo una de varias variantes nacionales de un estándar de código de caracteres internacional.
Otros organismos de estándares internacionales han ratificado codificaciones de caracteres como ISO 646 (1967) que son idénticas o casi idénticas a ASCII, con extensiones para caracteres fuera del alfabeto inglés y símbolos utilizados fuera de los Estados Unidos, como el símbolo de United States la libra esterlina del Reino (£); p.ej. con la página de códigos 1104. Casi todos los países necesitaban una versión adaptada de ASCII, ya que ASCII se ajustaba a las necesidades solo de EE. UU. y algunos otros países. Por ejemplo, Canadá tenía su propia versión que admitía caracteres franceses.
Muchos otros países desarrollaron variantes de ASCII para incluir letras no inglesas (p. ej., é, ñ, ß, Ł), símbolos de moneda (p. ej., £, ¥), etc. Véase también YUSCII (Yugoslavia).
Compartiría la mayoría de los caracteres en común, pero asignaría otros caracteres útiles localmente a varios puntos de código reservados para "uso nacional". Sin embargo, los cuatro años que transcurrieron entre la publicación de ASCII-1963 y la primera aceptación de ISO de una recomendación internacional durante 1967 hicieron que las elecciones de ASCII para los caracteres de uso nacional parecieran ser estándares de facto para el mundo., causando confusión e incompatibilidad una vez que otros países comenzaron a hacer sus propias asignaciones a estos puntos de código.
ISO/IEC 646, como ASCII, es un conjunto de caracteres de 7 bits. No pone a disposición ningún código adicional, por lo que los mismos puntos de código codifican diferentes caracteres en diferentes países. Los códigos de escape se definieron para indicar qué variante nacional se aplicaba a un fragmento de texto, pero rara vez se usaban, por lo que a menudo era imposible saber con qué variante trabajar y, por lo tanto, qué carácter representaba un código y, en general, el texto. De todos modos, los sistemas de procesamiento solo podían hacer frente a una variante.
Debido a que los caracteres de corchetes y llaves de ASCII se asignaron a "uso nacional" puntos de código que se usaron para letras acentuadas en otras variantes nacionales de ISO/IEC 646, un programador alemán, francés o sueco, etc. que usaba su variante nacional de ISO/IEC 646, en lugar de ASCII, tenía que escribir y, por lo tanto,, leer, algo como
ä aÄiÜ = 'Ön'; ü
en lugar de
{ a[i] = 'n'; }
Los trigrafos C se crearon para resolver este problema para ANSI C, aunque su introducción tardía y su implementación inconsistente en los compiladores limitaron su uso. Muchos programadores mantuvieron sus computadoras en US-ASCII, por lo que el texto sin formato en sueco, alemán, etc. (por ejemplo, en correo electrónico o Usenet) contenía "{, }" y variantes similares en medio de las palabras, algo a lo que se acostumbraron esos programadores. Por ejemplo, un programador sueco que envía un correo a otro programador preguntándole si debería ir a almorzar, podría obtener "N{jag har sm|rg}sar" como respuesta, que debería ser "Nä jag har smörgåsar" que significa 'No, tengo sándwiches'.
En Japón y Corea, todavía a partir de la década de 2020, se usa una variación de ASCII, en la que la barra invertida (5C hexadecimal) se representa como ¥ (un signo de yen, en Japón) o ₩ (un signo de won, en Corea). Esto significa que, por ejemplo, la ruta del archivo C:UsersSmith se muestra como C:¥Users¥Smith (en Japón) o C:₩Users₩Smith (en Corea).
Códigos de 8 bits
Finalmente, a medida que las computadoras de 8, 16 y 32 bits (y más tarde de 64 bits) comenzaron a reemplazar las computadoras de 12, 18 y 36 bits como norma, se volvió común usar una de 8 bits. bit byte para almacenar cada carácter en la memoria, brindando una oportunidad para parientes extendidos de 8 bits de ASCII. En la mayoría de los casos, estos se desarrollaron como verdaderas extensiones de ASCII, dejando intacto el mapeo de caracteres original, pero agregando definiciones de caracteres adicionales después de los primeros 128 (es decir, 7 bits).
Las codificaciones incluyen ISCII (India), VISCII (Vietnam). Aunque estas codificaciones a veces se denominan ASCII, el verdadero ASCII se define estrictamente solo por el estándar ANSI.
La mayoría de los primeros sistemas informáticos domésticos desarrollaron sus propios conjuntos de caracteres de 8 bits que contenían dibujos de líneas y glifos de juegos y, a menudo, completaban algunos o todos los caracteres de control del 0 al 31 con más gráficos. Las computadoras Kaypro CP/M usaban el "superior" 128 caracteres del alfabeto griego.
El código PETSCII que Commodore International usó para sus sistemas de 8 bits es probablemente único entre los códigos posteriores a 1970 por estar basado en ASCII-1963, en lugar del ASCII-1967 más común, como el que se encuentra en la computadora ZX Spectrum. Las computadoras Atari de 8 bits y las computadoras Galaksija también usaban variantes ASCII.
La PC de IBM definió la página de códigos 437, que reemplazó los caracteres de control con símbolos gráficos como caras sonrientes y asignó caracteres gráficos adicionales a las 128 posiciones superiores. Los sistemas operativos como DOS admitían estas páginas de códigos y los fabricantes de PC de IBM las admitían en hardware. Digital Equipment Corporation desarrolló el Juego de caracteres multinacionales (DEC-MCS) para usar en el popular terminal VT220 como una de las primeras extensiones diseñadas más para idiomas internacionales que para gráficos de bloques. Macintosh definió Mac OS Roman y Postscript también definieron un conjunto, ambos contenían letras internacionales y signos de puntuación tipográficos en lugar de gráficos, más como conjuntos de caracteres modernos.
El estándar ISO/IEC 8859 (derivado de DEC-MCS) finalmente proporcionó un estándar que la mayoría de los sistemas copiaron (al menos con tanta precisión como copiaron ASCII, pero con muchas sustituciones). Una extensión adicional popular diseñada por Microsoft, Windows-1252 (a menudo mal etiquetada como ISO-8859-1), agregó los signos de puntuación tipográficos necesarios para la impresión de texto tradicional. ISO-8859-1, Windows-1252 y el ASCII original de 7 bits fueron las codificaciones de caracteres más comunes hasta 2008, cuando UTF-8 se volvió más común.
ISO/IEC 4873 introdujo 32 códigos de control adicionales definidos en el rango hexadecimal 80–9F, como parte de la extensión de la codificación ASCII de 7 bits para convertirla en un sistema de 8 bits.
Unicódigo
Unicode y el conjunto de caracteres universales (UCS) ISO/IEC 10646 tienen una gama mucho más amplia de caracteres y sus diversas formas de codificación han comenzado a reemplazar rápidamente a ISO/IEC 8859 y ASCII en muchos entornos. Si bien ASCII está limitado a 128 caracteres, Unicode y UCS admiten más caracteres al separar los conceptos de identificación única (usando números naturales llamados puntos de código) y codificación (a 8, 16 o 32 caracteres). bits binarios, llamados UTF-8, UTF-16 y UTF-32, respectivamente).
ASCII se incorporó al conjunto de caracteres Unicode (1991) como los primeros 128 símbolos, por lo que los caracteres ASCII de 7 bits tienen los mismos códigos numéricos en ambos conjuntos. Esto permite que UTF-8 sea compatible con versiones anteriores de ASCII de 7 bits, ya que un archivo UTF-8 que contiene solo caracteres ASCII es idéntico a un archivo ASCII que contiene la misma secuencia de caracteres. Aún más importante, la compatibilidad hacia adelante está garantizada como software que reconoce solo los caracteres ASCII de 7 bits como especiales y no altera los bytes con el conjunto de bits más alto (como se hace a menudo para admitir extensiones ASCII de 8 bits como ISO-8859-1) conservará los datos UTF-8 sin cambios.
Contenido relacionado
Retrorreflector
Tercer Concilio de Letrán
Sistema de tablón de anuncios