ASCII

AjustarCompartirImprimirCitar
Padrão de codificação de caracteres americanos

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

ASCII (1963). Control Fotos de controles equivalentes são mostrados onde eles existem, ou um ponto cinza de outra forma.

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

Símbolos iniciais atribuídos aos 32 códigos de controle, espaço e excluir caracteres. (MIL-STD-188-100, 1972)

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árioO quê?Dez.HexAbreviaçãoUnicode Control PicturesNotação de cuidadosSequência de fuga de CNome (1967)
196319651967
000 0000)000:00 NULLNULObrigado.*Null
000 000 000001101:01 SOMSO^ AInício do cabeçalho
000 0010002202 EOASTX^ BInício do texto
000 0011003303:03 EOMETX^CFim do texto
0100004404 E...^DFim da transmissão
000 0101005505:00 WRUPT^ EConsulta
000 0110006606:06 RUIACK^ FAgradecimentos
1 000 000007707 BEMBEL^ G\aBell.
000 000 000010808 FE0BS^ H. H. H.\bBackspace
000 1001011909h00 HT/SKHT^ Eu...Não.Guia horizontal
10 milhões01210.0A LF^JNão.Alimentação de linha
1011013110B VTABVT^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 000014120C FF^ L\fAlimentação do formulário
1101015130D CR- Sim.Retorno de Transporte
10 milhões de euros016140 Então...^ NShift Fora
1111017150F SI^ OShift em
001 000002016.10. DC0DIREITOEscape de ligação de dados
001 000 000102117.11 DC1^ QControle de dispositivo 1 (muitas vezes XON)
001 001002218.12 DC2^ RControle de dispositivo 2
001 00110231913 DC3^ SControle de dispositivo 3 (frequentemente XOFF)
001 010002420.14 DC4^ TControle de dispositivo 4
001 01010252115 ERNAK^ UAgradecimentos negativos
001 01100262216. SYNCSINOPSESincronia: Idle
001 01110272317. LEMETB^ WFim do bloco de transmissão
001 100003024.18. S0PODE^ XCancelar Cancelar Cancelar
001 10010312519 S1EM^ YFim do Médio
001 1010032261A S2SSASSUNTO^ZSubstituto
001 1011033271B S3CES(86)\Fugir
001 1100034281C S4FSSeparador de arquivos
001 110103529 de Março1D S5GSSeparador de Grupo
001 1110036301 S6RS^Separador de Registro
001 1111037311F S7EUASeparador 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 11111771277F 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árioO quê?Dez.HexGlyph
196319651967
010 00000403220.espaço
010 00010413321!
010 00100423422"
010 00110433523#
010 01000443624.$
010 01010453725%
010 01100463826>
010 01110473927'
010 10000504028(
010 10010514129 de Março)
010 1010052422A*
010 1011053432B+
010 1100054442C,
010 1101055452D- Não.
010 111005646.2.
010 1111057472F/
011 000006048300
011 000106149311
011 001006250322
011 001106351333
011 010006452344
011 010106553355
011 011006654366
011 011106755377
011 100007056388
011 100107157399
011 1010072583A:
011073593B;
011 1100074603C<
011 1101075613D= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
011 1110076623E>
011077633F?
100 0000100.6440@"@
100 00011016541A
100 00101026642B
100 00111036743C
100 01001046844D
100 01011056945E
100 01101067046.F
100 01111077147G
100 mil.1107248H. H. H.
100 10011117349Eu...
100 1010112744AJJ
100 1011113754BKK
100 1100114764CL
100 1101115774DM
100 1110116784EN
100 1111117794FO
101 00001208050P
101 000 0001218151Q
101 00101228252R
101 00111238353S
101 01001248454T
101 01011258555U
101 01101268656V
101 01111278757W
101 mil1308858X
101 10011318959Y
101.132905AZ.
101.133915BNão.
101 1100134925C\~\
101 1101135935D]
101 1110136945^
101 1111137955FNão.
110 00001409660@"
110 000 00011419761um
110 00101429862b)
110 00111439963c
110 0100144100.64D
110 010114510165e
110 011014610266f
110 011114710367g
110 mil.15010468h
110 100115110569Eu...
110 10101521066AJJ
10111531076Bk
110 11001541086CEu...
110 11011551096Dm
110 11101561106n
110 11111571116Fo
111 000016011270p
111 00016111371q
111 001016211472R
111 001116311573S
111 010016411674)
111 010116511775u
111 011016611876v
11116711977O quê?
111 100017012078x
111 100117112179Sim.
111 10101721227Azangão.
111 10111731237B(
111 11001741247CACK?|
111 11011751257D?
111 11101761267ECES(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&#34 ;. 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

O Padrão Avançado de Criptografia também conhecido por seu nome original Rijndael é uma especificação para a criptografia de dados eletrônicos...

Applesoft BASIC

Applesoft BASIC é um dialeto do Microsoft BASIC, desenvolvido por Marc McDonald e Ric Weiland, fornecido com a série de computadores Apple II. Ele substitui...

Apple I

O Apple Computer 1, originalmente lançado como Apple Computer e posteriormente conhecido como Apple I ou Apple-1, é um computador desktop de 8 bits lançado...
Más resultados...
Tamaño del texto: