ASCII
ASCII (ASS-kee), abreviado de American Standard Code for Information Interchange, é um padrão de codificação de caracteres para comunicação eletrônica. Os códigos ASCII representam texto em computadores, equipamentos de telecomunicações e outros dispositivos. Devido às limitações técnicas dos sistemas de computador na época em que foi inventado, o ASCII tinha apenas 128 pontos de código, dos quais apenas 95 são caracteres imprimíveis, o que limitava severamente seu escopo. Em vez disso, todos os sistemas de computador modernos usam Unicode, que tem milhões de pontos de código, mas os primeiros 128 deles são iguais ao conjunto ASCII.
A Internet Assigned Numbers Authority (IANA) prefere o nome US-ASCII para esta codificação de caracteres.
ASCII é um dos marcos do IEEE.
Visão geral
ASCII foi desenvolvido a partir do código do telégrafo. Seu primeiro uso comercial foi como um código de teleimpressão de sete bits promovido pelos serviços de dados da Bell. O trabalho no padrão ASCII começou em maio de 1961, com a primeira reunião do subcomitê X3.2 da American Standards Association (ASA) (agora American National Standards Institute ou ANSI). A primeira edição do padrão foi publicada em 1963, passou por uma grande revisão em 1967 e teve sua atualização mais recente em 1986. ) de listas e recursos adicionados para dispositivos diferentes de teleimpressoras.
O uso do formato ASCII para Network Interchange foi descrito em 1969. Esse documento foi formalmente elevado a um padrão da Internet em 2015.
Originalmente baseado no alfabeto inglês (moderno), o ASCII codifica 128 caracteres especificados em números inteiros de sete bits, conforme mostrado no gráfico ASCII acima. Noventa e cinco dos caracteres codificados são imprimíveis: eles incluem os dígitos 0 a 9, letras minúsculas a a z, letras maiúsculas A a Z e símbolos de pontuação. Além disso, a especificação ASCII original incluía 33 códigos de controle não imprimíveis originários de máquinas de teletipo; a maioria deles agora está obsoleta, embora alguns ainda sejam comumente usados, como o retorno de carro, alimentação de linha e códigos de tabulação.
Por exemplo, letras minúsculas i seriam representadas na codificação ASCII pelo binário 1101001 = hexadecimal 69 (i é a nona letra) = decimal 105.
Apesar de ser um padrão americano, o ASCII não possui um ponto de código para o centavo (¢). Ele também não oferece suporte a termos em inglês com sinais diacríticos, como currículo e jalapeño, ou nomes próprios com sinais diacríticos, como Beyoncé.
História
O American Standard Code for Information Interchange (ASCII) foi desenvolvido sob os auspícios de um comitê da American Standards Association (ASA), denominado comitê X3, por seu subcomitê X3.2 (mais tarde X3L2) e, posteriormente, por esse grupo de trabalho X3.2.4 do subcomitê (agora INCITS). A ASA mais tarde tornou-se o Instituto de Padrões dos Estados Unidos da América (USASI) e, finalmente, tornou-se o American National Standards Institute (ANSI).
Com os outros caracteres especiais e códigos de controle preenchidos, o ASCII foi publicado como ASA X3.4-1963, deixando 28 posições de código sem nenhum significado atribuído, reservado para padronização futura, e um código de controle não atribuído. Houve algum debate na época se deveria haver mais caracteres de controle em vez do alfabeto minúsculo. A indecisão não durou muito: em maio de 1963, o CCITT Working Party on the New Telegraph Alphabet propôs atribuir caracteres minúsculos aos sticks 6 e 7, e a International Organization for Standardization TC 97 SC 2 votou em outubro para incorporar a mudança em seu projeto de norma. O grupo de trabalho X3.2.4 votou sua aprovação para a mudança para ASCII em sua reunião de maio de 1963. A localização das letras minúsculas nos sticks 6 e 7 fez com que os caracteres diferissem em padrão de bits das maiúsculas por um único bit, o que simplificou a correspondência de caracteres sem distinção entre maiúsculas e minúsculas e a construção de teclados e impressoras.
O comitê X3 fez outras alterações, incluindo outros novos caracteres (os caracteres de chave e barra vertical), renomeando alguns caracteres de controle (SOM tornou-se início do cabeçalho (SOH)) e movendo ou removendo outros (RU foi removido). ASCII foi posteriormente atualizado como USAS X3.4-1967, depois USAS X3.4-1968, ANSI X3.4-1977 e, finalmente, ANSI X3.4-1986.
Revisões do padrão ASCII:
- ASA X3.4-1963
- ASA X3.4-1965 (aprovado, mas não publicado, no entanto usado por IBM 2260 & 2265 Display Stations e 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) INCITOS 4-1986 [R2012]
- (ANSI) INCITS 4-1986 [R2017]
No padrão X3.15, o comitê X3 também abordou como o ASCII deve ser transmitido (o bit menos significativo primeiro) e como deve ser gravado em fita perfurada. Eles propuseram um padrão de 9 trilhas para fita magnética e tentaram lidar com alguns formatos de cartões perfurados.
Considerações de design
Largura de bits
O subcomitê X3.2 projetou o ASCII com base nos sistemas de codificação de teleimpressão anteriores. Como outras codificações de caracteres, ASCII especifica uma correspondência entre padrões de bits digitais e símbolos de caracteres (ou seja, grafemas e caracteres de controle). Isso permite que os dispositivos digitais se comuniquem entre si e processem, armazenem e comuniquem informações orientadas a caracteres, como a linguagem escrita. Antes do ASCII ser desenvolvido, as codificações em uso incluíam 26 caracteres alfabéticos, 10 dígitos numéricos e de 11 a 25 símbolos gráficos especiais. Para incluir tudo isso e controlar caracteres compatíveis com o padrão do Comitê Consultatif International Téléphonique et Télégraphique (CCITT) International Telegraph Alphabet No. 2 (ITA2) de 1924, FIELDATA (1956) e EBCDIC antigo (1963), mais de 64 códigos foram necessário para ASCII.
O ITA2, por sua vez, foi baseado no código telegráfico de 5 bits que Émile Baudot inventou em 1870 e patenteou em 1874.
O comitê debateu a possibilidade de uma função de deslocamento (como em ITA2), que permitiria que mais de 64 códigos fossem representados por um código de seis bits. Em um código deslocado, alguns códigos de caracteres determinam as escolhas entre as opções para os seguintes códigos de caracteres. Ele permite a codificação compacta, mas é menos confiável para a transmissão de dados, pois um erro na transmissão do código de turno normalmente torna uma longa parte da transmissão ilegível. O comitê de padrões decidiu contra a mudança e, portanto, o ASCII exigia pelo menos um código de sete bits.
O comitê considerou um código de oito bits, já que oito bits (octetos) permitiriam que dois padrões de quatro bits codificassem com eficiência dois dígitos com decimal codificado em binário. No entanto, exigiria que toda a transmissão de dados enviasse oito bits, quando sete poderiam ser suficientes. O comitê votou pelo uso de um código de sete bits para minimizar os custos associados à transmissão de dados. Como a fita perfurada na época podia gravar oito bits em uma posição, ela também permitia um bit de paridade para verificação de erros, se desejado. Máquinas de oito bits (com octetos como o tipo de dados nativo) que não usam verificação de paridade normalmente definem o oitavo bit como 0.
Organização interna
O próprio código foi padronizado para que a maioria dos códigos de controle estivessem juntos e todos os códigos gráficos estivessem juntos, para facilitar a identificação. Os dois primeiros chamados bastões ASCII (32 posições) foram reservados para caracteres de controle. O "espaço" o caractere tinha que vir antes dos gráficos para facilitar a classificação, então ficou na posição 20hex; pela mesma razão, muitos sinais especiais comumente usados como separadores foram colocados antes dos dígitos. O comitê decidiu que era importante oferecer suporte a alfabetos maiúsculos de 64 caracteres e escolheu o padrão ASCII para que pudesse ser reduzido facilmente a um conjunto utilizável de códigos gráficos de 64 caracteres, como foi feito no código DEC SIXBIT (1963). Letras minúsculas, portanto, não foram intercaladas com maiúsculas. Para manter as opções disponíveis para letras minúsculas e outros gráficos, os códigos especiais e numéricos foram organizados antes das letras e a letra A foi colocada na posição 41hex para corresponder ao rascunho do padrão britânico correspondente. Os dígitos de 0 a 9 são prefixados com 011, mas os 4 bits restantes correspondem a seus respectivos valores em binário, tornando a conversão com decimal codificado em binário direta.
Muitos dos caracteres não alfanuméricos foram posicionados para corresponder à sua posição deslocada nas máquinas de escrever; uma sutileza importante é que eles eram baseados em máquinas de escrever mecânicas, não em máquinas de escrever elétricas. As máquinas de escrever mecânicas seguiam o padrão de fato estabelecido pela Remington No. 2 (1878), a primeira máquina de escrever com tecla shift, e os valores deslocados de 23456789-
eram "#$ %_&'()
– as primeiras máquinas de escrever omitiam 0 e 1, usando O (letra maiúscula o) e l (letra minúscula L), mas pares 1!
e 0)
tornou-se padrão uma vez que 0 e 1 se tornaram comuns. Assim, em ASCII !"#$%
foram colocados no segundo bastão, nas posições 1–5, correspondendo aos dígitos 1–5 no bastão adjacente. Os parênteses não podem corresponder a 9 e 0, no entanto, porque o lugar correspondente a 0 foi ocupado pelo caractere de espaço. Isso foi resolvido removendo _
(sublinhado) de 6 e deslocando os caracteres restantes, o que correspondia a muitas máquinas de escrever européias que colocavam os parênteses com 8 e 9. Essa discrepância das máquinas de escrever levou a teclados de pares de bits, notadamente o Teletype Model 33, que usava o layout deslocado à esquerda correspondente ao ASCII, diferentemente das máquinas de escrever mecânicas tradicionais.
Máquinas de escrever elétricas, principalmente a IBM Selectric (1961), usavam um layout um pouco diferente que se tornou padrão de fato em computadores – seguindo o IBM PC (1981), especialmente o Modelo M (1984) – e, portanto, alteram os valores dos símbolos em os teclados modernos não correspondem tão de perto à tabela ASCII quanto os teclados anteriores. O par /?
também data do número 2, e os pares ,<.>
foram usados em alguns teclados (outros, incluindo o número 2, não não mude ,
(vírgula) ou .
(ponto final) para que possam ser usados em letras maiúsculas sem unshifting). No entanto, o ASCII dividiu o par ;:
(datando do número 2) e reorganizou os símbolos matemáticos (convenções variadas, geralmente -* =+
) para :* ;+ -=
.
Alguns caracteres de máquinas de escrever comuns não foram incluídos, notavelmente ½ ¼ ¢
, enquanto ^ ` ~
foram incluídos como sinais diacríticos para uso internacional, e < >
para uso matemático, juntamente com os caracteres de linha simples \ |
(além do /
comum). O símbolo @ não era usado na Europa continental e o comitê esperava que fosse substituído por um À acentuado na variação francesa, então o @ foi colocado na posição 40hex, logo antes da letra A.
Os códigos de controle considerados essenciais para a transmissão de dados eram o início da mensagem (SOM), o fim do endereço (EOA), o fim da mensagem (EOM), o fim da transmissão (EOT), "quem é você?& #34; (WRU), "é você?" (RU), um controle de dispositivo reservado (DC0), ocioso síncrono (SYNC) e reconhecimento (ACK). Estes foram posicionados para maximizar a distância de Hamming entre seus padrões de bits.
Ordem dos caracteres
A ordem do código ASCII também é chamada de ordem ASCIIbética. O agrupamento de dados às vezes é feito nesta ordem, em vez de "padrão" ordem alfabética (sequência de agrupamento). Os principais desvios na ordem ASCII são:
- Todas as maiúsculas vêm antes de letras minúsculas; por exemplo, "Z" precede "a"
- Digitas e muitas marcas de pontuação vêm antes de letras
Uma ordem intermediária converte letras maiúsculas em minúsculas antes de comparar os valores ASCII.
Grupos de caracteres
Caracteres de controle
ASCII reserva os primeiros 32 códigos (números de 0 a 31 decimais) para caracteres de controle: códigos originalmente destinados a não representar informações imprimíveis, mas sim controlar dispositivos (como impressoras) que usam ASCII ou fornecer meta- informações sobre fluxos de dados, como os armazenados em fita magnética.
Por exemplo, o caractere 10 representa a "alimentação de linha" função (que faz com que uma impressora avance seu papel), e o caractere 8 representa "backspace". RFC 2822 refere-se a caracteres de controle que não incluem retorno de carro, alimentação de linha ou espaço em branco como caracteres de controle sem espaço em branco. Exceto pelos caracteres de controle que prescrevem formatação elementar orientada a linhas, o ASCII não define nenhum mecanismo para descrever a estrutura ou a aparência do texto em um documento. Outros esquemas, como linguagens de marcação, páginas de endereços e layout e formatação de documentos.
O padrão ASCII original usava apenas frases descritivas curtas para cada caractere de controle. A ambigüidade que isso causava às vezes era intencional, por exemplo, onde um caractere seria usado de maneira ligeiramente diferente em um link de terminal e em um fluxo de dados, e às vezes acidental, por exemplo, com o significado de "excluir".
Provavelmente o dispositivo mais influente afetando a interpretação desses caracteres foi o Teletype Model 33 ASR, que era um terminal de impressão com uma opção de leitor/perfurador de fita de papel disponível. A fita de papel era um meio muito popular para armazenamento de programas de longo prazo até a década de 1980, menos dispendiosa e, de certa forma, menos frágil do que a fita magnética. Em particular, as atribuições da máquina Teletype Model 33 para os códigos 17 (control-Q, DC1, também conhecido como XON), 19 (control-S, DC3, também conhecido como XOFF) e 127 (excluir) tornaram-se padrões de fato. O Modelo 33 também se destacou por interpretar literalmente a descrição de controle-G (código 7, BEL, que significa alertar o operador de forma audível), pois a unidade continha uma campainha real que tocava quando recebia um caractere BEL. Como a parte superior da tecla O também mostrava um símbolo de seta para a esquerda (de ASCII-1963, que tinha esse caractere em vez de sublinhado), um uso não compatível do código 15 (control-O, shift in) interpretado como "delete personagem anterior" também foi adotado por muitos dos primeiros sistemas de compartilhamento de tempo, mas acabou sendo negligenciado.
Quando um Teletype 33 ASR equipado com o leitor automático de fita de papel recebeu um controle-S (XOFF, uma abreviação de transmit off), ele fez com que o leitor de fita parasse; receber controle-Q (XON, transmitir ativado) fez com que o leitor de fita continuasse. Essa chamada técnica de controle de fluxo foi adotada por vários sistemas operacionais de computador como um "aperto de mão" sinalizar avisando um remetente para interromper a transmissão devido a estouro de buffer iminente; persiste até hoje em muitos sistemas como uma técnica de controle de saída manual. Em alguns sistemas, control-S mantém seu significado, mas control-Q é substituído por um segundo control-S para retomar a saída.
O 33 ASR também pode ser configurado para empregar controle-R (DC2) e controle-T (DC4) para iniciar e parar a perfuração da fita; em algumas unidades equipadas com esta função, as letras dos caracteres de controle correspondentes na tecla acima da letra eram TAPE e TAPE, respectivamente.
Excluir x Backspace
O Teletype não podia mover sua cabeça tipográfica para trás, então não tinha uma tecla em seu teclado para enviar um BS (backspace). Em vez disso, havia uma chave marcada RUB OUT que enviava o código 127 (DEL). O objetivo dessa chave era apagar erros em uma fita de papel inserida manualmente: o operador tinha que apertar um botão no perfurador de fita para apoiá-lo e digitar o apagar, que perfurou todos os furos e substituiu o erro por um caractere que pretendia ser ignorado. Os teletipos eram comumente usados com os computadores mais baratos da Digital Equipment Corporation (DEC); esses sistemas tinham que usar as teclas disponíveis e, portanto, o código DEL foi atribuído para apagar o caractere anterior. Por causa disso, os terminais de vídeo DEC (por padrão) enviaram o código DEL para a tecla marcada como "Backspace" enquanto a chave separada marcada como "Excluir" enviou uma sequência de fuga; muitos outros terminais concorrentes enviaram um código BS para a tecla backspace.
O driver do terminal Unix só poderia usar um código para apagar o caractere anterior, isso poderia ser definido como BS ou DEL, mas não ambos, resultando em situações recorrentes de ambigüidade onde os usuários tiveram que decidir dependendo em qual terminal eles estavam usando (shells que permitem edição de linha, como ksh, bash e zsh, entendem ambos). A suposição de que nenhuma tecla enviava um código BS permitia que control+H fosse usado para outros fins, como a função "ajuda" comando de prefixo no GNU Emacs.
Fugir
Muitos outros códigos de controle receberam significados bem diferentes dos originais. A "fuga" O caractere (ESC, código 27), por exemplo, foi planejado originalmente para permitir o envio de outros caracteres de controle como literais, em vez de invocar seu significado, uma "sequência de escape". Este é o mesmo significado de "escape" encontrados em codificações de URL, strings de linguagem C e outros sistemas em que certos caracteres têm um significado reservado. Com o tempo, essa interpretação foi cooptada e acabou sendo alterada.
No uso moderno, um ESC enviado para o terminal geralmente indica o início de uma sequência de comandos geralmente na forma do chamado "ANSI escape code" (ou, mais propriamente, um "Control Sequence Introducer") da ECMA-48 (1972) e seus sucessores, começando com ESC seguido por um "[" (colchete esquerdo). Em contraste, um ESC enviado do terminal é mais frequentemente usado como um caractere fora de banda usado para encerrar uma operação ou modo especial, como nos editores de texto TECO e vi. Na interface gráfica do usuário (GUI) e nos sistemas de janelas, o ESC geralmente faz com que um aplicativo interrompa sua operação atual ou saia (encerre) completamente.
Fim da linha
A ambigüidade inerente de muitos caracteres de controle, combinada com seu uso histórico, criou problemas ao transferir "texto simples" arquivos entre sistemas. O melhor exemplo disso é o problema de nova linha em vários sistemas operacionais. As máquinas de teletipo exigiam que uma linha de texto fosse encerrada com "retorno de carro" (que move o cabeçote de impressão para o início da linha) e "alimentação de linha" (que avança o papel uma linha sem mover o cabeçote de impressão). O nome "retorno do carro" vem do fato de que em uma máquina de escrever manual o carro que segura o papel se move enquanto as barras de tipo que batem na fita permanecem estacionárias. Todo o carro tinha que ser empurrado (retornado) para a direita para posicionar o papel para a próxima linha.
Os sistemas operacionais DEC (OS/8, RT-11, RSX-11, RSTS, TOPS-10, etc.) usavam ambos os caracteres para marcar o final de uma linha para que o dispositivo do console (originalmente máquinas de teletipo) funcionasse . No momento em que os chamados "TTYs de vidro" (mais tarde chamados de CRTs ou "terminais burros") surgiu, a convenção foi tão bem estabelecida que a compatibilidade com versões anteriores exigiu continuar a segui-la. Quando Gary Kildall criou o CP/M, ele foi inspirado por algumas das convenções de interface de linha de comando usadas no sistema operacional RT-11 da DEC.
Até a introdução do PC DOS em 1981, a IBM não teve influência nisso porque seus sistemas operacionais da década de 1970 usavam codificação EBCDIC em vez de ASCII, e eles eram orientados para entrada de cartão perfurado e saída de impressora de linha na qual o conceito de &# 34;retorno do carro" era sem sentido. O PC DOS da IBM (também comercializado como MS-DOS pela Microsoft) herdou a convenção em virtude de ser vagamente baseado no CP/M, e o Windows, por sua vez, herdou-o do MS-DOS.
Exigir dois caracteres para marcar o fim de uma linha introduz complexidade e ambiguidade desnecessárias sobre como interpretar cada caractere quando encontrado sozinho. Para simplificar, os fluxos de dados de texto simples, incluindo arquivos, em Multics usaram alimentação de linha (LF) sozinha como um terminador de linha. Os sistemas Unix e Unix-like, e os sistemas Amiga, adotaram esta convenção do Multics. Por outro lado, o Macintosh OS original, o Apple DOS e o ProDOS usavam o retorno de carro (CR) sozinho como terminador de linha; no entanto, como a Apple agora substituiu esses sistemas operacionais obsoletos pelo sistema operacional macOS baseado em Unix, eles agora também usam alimentação de linha (LF). O Radio Shack TRS-80 também usou um CR solitário para terminar as linhas.
Os computadores conectados à ARPANET incluíam máquinas executando sistemas operacionais como TOPS-10 e TENEX usando terminações de linha CR-LF; máquinas executando sistemas operacionais como Multics usando terminações de linha LF; e máquinas executando sistemas operacionais como o OS/360 que representavam linhas como uma contagem de caracteres seguida pelos caracteres da linha e que usavam codificação EBCDIC em vez de ASCII. O protocolo Telnet definiu um ASCII "Network Virtual Terminal" (NVT), de modo que as conexões entre hosts com diferentes convenções de finalização de linha e conjuntos de caracteres possam ser suportadas pela transmissão de um formato de texto padrão pela rede. O Telnet usava ASCII junto com as terminações de linha CR-LF, e o software que usava outras convenções traduzia entre as convenções locais e o NVT. O File Transfer Protocol adotou o protocolo Telnet, incluindo o uso do Network Virtual Terminal, para uso na transmissão de comandos e transferência de dados no modo ASCII padrão. Isso adiciona complexidade às implementações desses protocolos e a outros protocolos de rede, como os usados para e-mail e a World Wide Web, em sistemas que não usam a convenção de terminação de linha CR-LF do NVT.
Fim do arquivo/fluxo
O monitor PDP-6 e seu sucessor PDP-10, TOPS-10, usavam control-Z (SUB) como uma indicação de fim de arquivo para entrada de um terminal. Alguns sistemas operacionais, como o CP/M, rastreavam o comprimento do arquivo apenas em unidades de blocos de disco e usavam control-Z para marcar o final do texto real no arquivo. Por essas razões, EOF, ou fim de arquivo, foi usado coloquialmente e convencionalmente como um acrônimo de três letras para control-Z em vez de SUBstitute. O código de fim de texto (ETX), também conhecido como control-C, era inadequado por vários motivos, enquanto o uso de Z como código de controle para encerrar um arquivo é análogo à sua posição no final do alfabeto e serve como uma ajuda mnemônica muito conveniente. Uma convenção historicamente comum e ainda prevalente usa a convenção de código ETX para interromper e interromper um programa por meio de um fluxo de dados de entrada, geralmente de um teclado.
Na biblioteca C e nas convenções do Unix, o caractere nulo é usado para terminar strings de texto; essas strings terminadas em nulo podem ser abreviadas como ASCIZ ou ASCIIZ, onde aqui Z significa "zero".
Gráfico de código de controle
Binário | O quê? | Dez. | Hex | Abreviação | Unicode Control Pictures | Notação de cuidados | Sequência de fuga de C | Nome (1967) | ||
---|---|---|---|---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||||||
000 0000 | ) | 0 | 00:00 | NULL | NUL | ␀ | Obrigado. | * | Null | |
000 000 000 | 001 | 1 | 01:01 | SOM | SO | ␁ | ^ A | Início do cabeçalho | ||
000 0010 | 002 | 2 | 02 | EOA | STX | ␂ | ^ B | Início do texto | ||
000 0011 | 003 | 3 | 03:03 | EOM | ETX | ␃ | ^C | Fim do texto | ||
0100 | 004 | 4 | 04 | E... | ␄ | ^D | Fim da transmissão | |||
000 0101 | 005 | 5 | 05:00 | WRU | PT | ␅ | ^ E | Consulta | ||
000 0110 | 006 | 6 | 06:06 | RUI | ACK | ␆ | ^ F | Agradecimentos | ||
1 000 000 | 007 | 7 | 07 | BEM | BEL | ␇ | ^ G | \a | Bell. | |
000 000 000 | 010 | 8 | 08 | FE0 | BS | ␈ | ^ H. H. H. | \b | Backspace | |
000 1001 | 011 | 9 | 09h00 | HT/SK | HT | ␉ | ^ Eu... | Não. | Guia horizontal | |
10 milhões | 012 | 10. | 0A | LF | ␊ | ^J | Não. | Alimentação de linha | ||
1011 | 013 | 11 | 0B | VTAB | VT | ␋ | ^K | - Sim. | Taberna vertical | |
1100 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 | 014 | 12 | 0C | FF | ␌ | ^ L | \f | Alimentação do formulário | ||
1101 | 015 | 13 | 0D | CR | ␍ | ↑ | - Sim. | Retorno de Transporte | ||
10 milhões de euros | 016 | 14 | 0 | Então... | ␎ | ^ N | Shift Fora | |||
1111 | 017 | 15 | 0F | SI | ␏ | ^ O | Shift em | |||
001 0000 | 020 | 16. | 10. | DC0 | DIREITO | ␐ | ↑ | Escape de ligação de dados | ||
001 000 0001 | 021 | 17. | 11 | DC1 | ␑ | ^ Q | Controle de dispositivo 1 (muitas vezes XON) | |||
001 0010 | 022 | 18. | 12 | DC2 | ␒ | ^ R | Controle de dispositivo 2 | |||
001 0011 | 023 | 19 | 13 | DC3 | ␓ | ^ S | Controle de dispositivo 3 (frequentemente XOFF) | |||
001 0100 | 024 | 20. | 14 | DC4 | ␔ | ^ T | Controle de dispositivo 4 | |||
001 0101 | 025 | 21 | 15 | ER | NAK | ␕ | ^ U | Agradecimentos negativos | ||
001 0110 | 026 | 22 | 16. | SYNC | SINOPSE | ␖ | ↑ | Sincronia: Idle | ||
001 0111 | 027 | 23 | 17. | LEM | ETB | ␗ | ^ W | Fim do bloco de transmissão | ||
001 1000 | 030 | 24. | 18. | S0 | PODE | ␘ | ^ X | Cancelar Cancelar Cancelar | ||
001 1001 | 031 | 25 | 19 | S1 | EM | ␙ | ^ Y | Fim do Médio | ||
001 1010 | 032 | 26 | 1A | S2 | SS | ASSUNTO | ␚ | ^Z | Substituto | |
001 1011 | 033 | 27 | 1B | S3 | CES(86) | ␛ | ↑ | \ | Fugir | |
001 1100 | 034 | 28 | 1C | S4 | FS | ␜ | ↑ | Separador de arquivos | ||
001 1101 | 035 | 29 de Março | 1D | S5 | GS | ␝ | ↑ | Separador de Grupo | ||
001 1110 | 036 | 30 | 1 | S6 | RS | ␞ | ^ | Separador de Registro | ||
001 1111 | 037 | 31 | 1F | S7 | EUA | ␟ | ↑ | Separador de unidade | ||
111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 | 177 | 127 | 7F | DEL | ␡ | ↑? | Excluir |
Outras representações podem ser usadas por equipamentos especializados, por exemplo gráficos ISO 2047 ou números hexadecimais.
Caracteres imprimíveis
Códigos 20hex a 7Ehex, conhecidos como caracteres imprimíveis, representam letras, dígitos, sinais de pontuação e alguns símbolos diversos. Existem 95 caracteres imprimíveis no total.
Código 20hex, o "espaço" caractere, denota o espaço entre as palavras, conforme produzido pela barra de espaço de um teclado. Como o caractere de espaço é considerado um gráfico invisível (em vez de um caractere de controle), ele é listado na tabela abaixo em vez da seção anterior.
Código 7Fhex corresponde ao "excluir" (DEL) caractere de controle e, portanto, é omitido deste gráfico; ele é abordado no gráfico da seção anterior. As versões anteriores do ASCII usavam a seta para cima em vez do cursor (5Ehex) e a seta para a esquerda em vez do sublinhado (5Fhex).
Binário | O quê? | Dez. | Hex | Glyph | ||
---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||
010 0000 | 040 | 32 | 20. | espaço | ||
010 0001 | 041 | 33 | 21 | ! | ||
010 0010 | 042 | 34 | 22 | " | ||
010 0011 | 043 | 35 | 23 | # | ||
010 0100 | 044 | 36 | 24. | $ | ||
010 0101 | 045 | 37 | 25 | % | ||
010 0110 | 046 | 38 | 26 | > | ||
010 0111 | 047 | 39 | 27 | ' | ||
010 1000 | 050 | 40 | 28 | ( | ||
010 1001 | 051 | 41 | 29 de Março | ) | ||
010 1010 | 052 | 42 | 2A | * | ||
010 1011 | 053 | 43 | 2B | + | ||
010 1100 | 054 | 44 | 2C | , | ||
010 1101 | 055 | 45 | 2D | - Não. | ||
010 1110 | 056 | 46. | 2 | . | ||
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 | 073 | 59 | 3B | ; | ||
011 1100 | 074 | 60 | 3C | < | ||
011 1101 | 075 | 61 | 3D | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | ||
011 1110 | 076 | 62 | 3E | > | ||
011 | 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 mil. | 110 | 72 | 48 | H. H. H. | ||
100 1001 | 111 | 73 | 49 | Eu... | ||
100 1010 | 112 | 74 | 4A | JJ | ||
100 1011 | 113 | 75 | 4B | KK | ||
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 000 000 | 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 mil | 130 | 88 | 58 | X | ||
101 1001 | 131 | 89 | 59 | Y | ||
101. | 132 | 90 | 5A | Z. | ||
101. | 133 | 91 | 5B | Não. | ||
101 1100 | 134 | 92 | 5C | \ | ~ | \ |
101 1101 | 135 | 93 | 5D | ] | ||
101 1110 | 136 | 94 | 5 | ↑ | ^ | |
101 1111 | 137 | 95 | 5F | ← | Não. | |
110 0000 | 140 | 96 | 60 | @ | " | |
110 000 0001 | 141 | 97 | 61 | um | ||
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 mil. | 150 | 104 | 68 | h | ||
110 1001 | 151 | 105 | 69 | Eu... | ||
110 1010 | 152 | 106 | 6A | JJ | ||
1011 | 153 | 107 | 6B | k | ||
110 1100 | 154 | 108 | 6C | Eu... | ||
110 1101 | 155 | 109 | 6D | m | ||
110 1110 | 156 | 110 | 6 | n | ||
110 1111 | 157 | 111 | 6F | o | ||
111 0000 | 160 | 112 | 70 | p | ||
111 000 | 161 | 113 | 71 | q | ||
111 0010 | 162 | 114 | 72 | R | ||
111 0011 | 163 | 115 | 73 | S | ||
111 0100 | 164 | 116 | 74 | ) | ||
111 0101 | 165 | 117 | 75 | u | ||
111 0110 | 166 | 118 | 76 | v | ||
111 | 167 | 119 | 77 | O quê? | ||
111 1000 | 170 | 120 | 78 | x | ||
111 1001 | 171 | 121 | 79 | Sim. | ||
111 1010 | 172 | 122 | 7A | zangão. | ||
111 1011 | 173 | 123 | 7B | ( | ||
111 1100 | 174 | 124 | 7C | ACK | ? | | |
111 1101 | 175 | 125 | 7D | ? | ||
111 1110 | 176 | 126 | 7E | CES(86) | | | ~ |
Conjunto de caracteres
ASCII (1977/1986) | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0x | NUL | SO | STX | ETX | E... | PT | ACK | BEL | BS | HT | LF | VT | FF | CR | Então... | SI |
1x | DIREITO | DC1 | DC2 | DC3 | DC4 | NAK | SINOPSE | ETB | PODE | EM | ASSUNTO | CES(86) | FS | GS | RS | EUA |
2x | SP | ! | " | # | $ | % | > | ' | ( | ) | * | + | , | - Não. | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | > | ? |
4x | @ | A | B | C | D | E | F | G | H. H. H. | Eu... | JJ | KK | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z. | Não. | \ | ] | ^ | Não. |
6x | " | um | b) | c | D | e | f | g | h | Eu... | JJ | k | Eu... | m | n | o |
7x | p | q | R | S | ) | u | v | O quê? | x | Sim. | zangão. | ( | | | ? | ~ | DEL |
Alterado ou adicionado em 1963 versão Alterado na versão de 1963 e 1965 |
Uso
ASCII foi usado comercialmente pela primeira vez em 1963 como um código teleimpressor de sete bits para a American Telephone & Rede TWX (TeletypeWriter eXchange) do Telegraph. O TWX originalmente usava o ITA2 de cinco bits anterior, que também era usado pelo sistema de teleimpressora Telex concorrente. Bob Bemer introduziu recursos como a sequência de escape. Seu colega britânico Hugh McGregor Ross ajudou a popularizar este trabalho - de acordo com Bemer, "tanto que o código que se tornaria ASCII foi chamado pela primeira vez de Código Bemer-Ross na Europa" ;. Por causa de seu extenso trabalho em ASCII, Bemer foi chamado de "o pai do ASCII".
Em 11 de março de 1968, o presidente dos Estados Unidos, Lyndon B. Johnson, determinou que todos os computadores adquiridos pelo governo federal dos Estados Unidos suportassem ASCII, declarando:
Eu também aprovou recomendações do Secretário de Comércio [Luther H. Hodges] sobre os padrões para gravar o Código Padrão de Intercâmbio de Informação em fitas magnéticas e fitas de papel quando eles são usados em operações de computador. Todos os computadores e configurações de equipamentos relacionados trazidos para o inventário do Governo Federal em e depois de 1 de julho de 1969, devem ter a capacidade de usar o Código Padrão para Intercâmbio de Informação e os formatos prescritos pelos padrões de fita magnética e fita de papel quando estes meios são usados.
ASCII era a codificação de caracteres mais comum na World Wide Web até dezembro de 2007, quando a codificação UTF-8 a ultrapassou; UTF-8 é compatível com ASCII.
Variantes e derivações
Conforme a tecnologia de computadores se espalhou pelo mundo, diferentes órgãos de padronização e corporações desenvolveram muitas variações de ASCII para facilitar a expressão de idiomas diferentes do inglês que usavam alfabetos baseados em romanos. Pode-se classificar algumas dessas variações como "extensões ASCII", embora alguns usem mal esse termo para representar todas as variantes, incluindo aquelas que não preservam o mapa de caracteres ASCII no intervalo de 7 bits. Além disso, as extensões ASCII também foram erroneamente rotuladas como ASCII.
Códigos de 7 bits
Desde o início de seu desenvolvimento, o ASCII pretendia ser apenas uma das várias variantes nacionais de um padrão internacional de código de caracteres.
Outros órgãos internacionais de padronização têm codificações de caracteres ratificadas, como ISO 646 (1967), que são idênticas ou quase idênticas a ASCII, com extensões para caracteres fora do alfabeto inglês e símbolos usados fora dos Estados Unidos, como o símbolo dos Estados Unidos Libra esterlina do Reino (£); por exemplo. com a página de código 1104. Quase todos os países precisavam de uma versão adaptada do ASCII, já que o ASCII atendia às necessidades apenas dos Estados Unidos e de alguns outros países. Por exemplo, o Canadá tinha sua própria versão que suportava caracteres franceses.
Muitos outros países desenvolveram variantes de ASCII para incluir letras não inglesas (por exemplo, é, ñ, ß, Ł), símbolos de moeda (por exemplo, £, ¥), etc. Veja também YUSCII (Iugoslávia).
Ele compartilharia a maioria dos caracteres em comum, mas atribuiria outros caracteres localmente úteis a vários pontos de código reservados para "uso nacional". No entanto, os quatro anos que se passaram entre a publicação do ASCII-1963 e a primeira aceitação da ISO de uma recomendação internacional em 1967 fizeram com que as escolhas do ASCII para os caracteres de uso nacional parecessem ser padrões de fato para o mundo. , causando confusão e incompatibilidade uma vez que outros países começaram a fazer suas próprias atribuições a esses pontos de código.
ISO/IEC 646, como ASCII, é um conjunto de caracteres de 7 bits. Ele não disponibiliza nenhum código adicional, portanto, os mesmos pontos de código codificam caracteres diferentes em países diferentes. Os códigos de escape foram definidos para indicar qual variante nacional se aplicava a um trecho de texto, mas raramente eram usados; portanto, muitas vezes era impossível saber com qual variante trabalhar e, portanto, qual caractere um código representava e, em geral, texto sistemas de processamento poderiam lidar com apenas uma variante de qualquer maneira.
Como os colchetes e colchetes do ASCII foram atribuídos a "uso nacional" pontos de código que foram usados para letras acentuadas em outras variantes nacionais do ISO/IEC 646, um programador alemão, francês ou sueco etc. usando sua variante nacional do ISO/IEC 646, em vez de ASCII, teve que escrever e, assim , leia, algo como
ä aÄiÜ = 'Ön'; ü
em vez de
{ a[i] = '\n'; }
Os trígrafos C foram criados para resolver este problema para ANSI C, embora sua introdução tardia e implementação inconsistente em compiladores limitassem seu uso. Muitos programadores mantinham seus computadores em US-ASCII, portanto, texto simples em sueco, alemão etc. (por exemplo, em e-mail ou Usenet) continha "{, }" e variantes semelhantes no meio das palavras, algo a que esses programadores se acostumaram. Por exemplo, um programador sueco enviando um e-mail a outro programador perguntando se eles deveriam ir almoçar, poderia receber "N{ jag har sm|rg}sar" como a resposta, que deve ser "Nä jag har smörgåsar" significando "Não, eu tenho sanduíches".
No Japão e na Coreia, ainda a partir da década de 2020, é utilizada uma variação do ASCII, em que a barra invertida (5C hex) é renderizada como ¥ (sinal do iene, no Japão) ou ₩ (sinal do Won, na Coreia ). Isso significa que, por exemplo, o caminho do arquivo C:\Users\Smith é mostrado como C:¥Users¥Smith (no Japão) ou C:₩Users₩Smith (na Coréia).
Códigos de 8 bits
Eventualmente, quando os computadores de 8, 16 e 32 bits (e posteriormente os de 64 bits) começaram a substituir os computadores de 12, 18 e 36 bits como norma, tornou-se comum usar um 8-bit byte de bit para armazenar cada caractere na memória, oferecendo uma oportunidade para parentes estendidos de 8 bits de ASCII. Na maioria dos casos, eles se desenvolveram como verdadeiras extensões do ASCII, deixando o mapeamento de caracteres original intacto, mas adicionando definições de caracteres adicionais após os primeiros 128 (ou seja, 7 bits) caracteres.
As codificações incluem ISCII (Índia), VISCII (Vietnã). Embora essas codificações às vezes sejam chamadas de ASCII, o verdadeiro ASCII é definido estritamente apenas pelo padrão ANSI.
A maioria dos primeiros sistemas de computadores domésticos desenvolveu seus próprios conjuntos de caracteres de 8 bits contendo desenhos de linhas e glifos de jogos, e muitas vezes preenchiam alguns ou todos os caracteres de controle de 0 a 31 com mais gráficos. Os computadores Kaypro CP/M usavam o "superior" 128 caracteres para o alfabeto grego.
O código PETSCII usado pela Commodore International para seus sistemas de 8 bits é provavelmente único entre os códigos posteriores a 1970 por ser baseado no ASCII-1963, em vez do ASCII-1967 mais comum, como o encontrado no computador ZX Spectrum. Computadores Atari de 8 bits e computadores Galaksija também usavam variantes ASCII.
O IBM PC definiu a página de código 437, que substituiu os caracteres de controle por símbolos gráficos, como rostos sorridentes, e mapeou caracteres gráficos adicionais para as 128 posições superiores. Os sistemas operacionais, como o DOS, suportavam essas páginas de código e os fabricantes de PCs IBM as suportavam em hardware. A Digital Equipment Corporation desenvolveu o Multinational Character Set (DEC-MCS) para uso no popular terminal VT220 como uma das primeiras extensões projetadas mais para idiomas internacionais do que para gráficos de bloco. O Macintosh definiu o Mac OS Roman e o Postscript também definiu um conjunto, ambos contendo letras internacionais e marcas de pontuação tipográficas em vez de gráficos, mais como conjuntos de caracteres modernos.
O padrão ISO/IEC 8859 (derivado do DEC-MCS) finalmente forneceu um padrão que a maioria dos sistemas copiou (pelo menos com a mesma precisão com que copiavam o ASCII, mas com muitas substituições). Uma outra extensão popular projetada pela Microsoft, o Windows-1252 (muitas vezes erroneamente rotulado como ISO-8859-1), adicionou os sinais de pontuação tipográficos necessários para a impressão de texto tradicional. ISO-8859-1, Windows-1252 e o ASCII original de 7 bits foram as codificações de caracteres mais comuns até 2008, quando o UTF-8 se tornou mais comum.
O ISO/IEC 4873 introduziu 32 códigos de controle adicionais definidos na faixa hexadecimal 80–9F, como parte da extensão da codificação ASCII de 7 bits para se tornar um sistema de 8 bits.
Unicode
O Unicode e o ISO/IEC 10646 Universal Character Set (UCS) têm uma gama muito mais ampla de caracteres e suas várias formas de codificação começaram a suplantar o ISO/IEC 8859 e o ASCII rapidamente em muitos ambientes. Enquanto o ASCII é limitado a 128 caracteres, o Unicode e o UCS suportam mais caracteres, separando os conceitos de identificação exclusiva (usando números naturais chamados pontos de código) e codificação (para 8, 16 ou 32). formatos binários de bits, chamados UTF-8, UTF-16 e UTF-32, respectivamente).
ASCII foi incorporado ao conjunto de caracteres Unicode (1991) como os primeiros 128 símbolos, portanto, os caracteres ASCII de 7 bits têm os mesmos códigos numéricos em ambos os conjuntos. Isso permite que o UTF-8 seja compatível com ASCII de 7 bits, pois um arquivo UTF-8 contendo apenas caracteres ASCII é idêntico a um arquivo ASCII contendo a mesma sequência de caracteres. Ainda mais importante, a compatibilidade futura é garantida como software que reconhece apenas caracteres ASCII de 7 bits como especiais e não altera bytes com o conjunto de bits mais alto (como geralmente é feito para oferecer suporte a extensões ASCII de 8 bits, como ISO-8859-1) preservará os dados UTF-8 inalterados.
Contenido relacionado
Padrão de criptografia avançada
Applesoft BASIC
Apple I