Curiosidades sobre ASCII

Primeiro, uma saudação Unicode: feliz ano da meia-risca (en dash, –): U+2013!
(ou, se preferirem decimal 2013 = 0x7dd, feliz ano da letra NKo “Fa”!)

Agora, de volta ao ASCII. O ASCII, curiosamente pronunciado como “áski” (contrariando nossa conhecida regra do c antes de i…), é um padrão de codificação de letras e símbolos bastante antigo e usado até hoje, principalmente como base para outras codificações. É interessante que ele não foi criado especialmente para computadores: na verdade ele foi criado numa época em que os telégrafos tinham também bastante importância. A idade e a origem estadunidense são aparentes ao vermos que tem apenas 7 bits (128 valores possíveis), não tem nenhuma letra acentuada, e alguns caracteres de controle que praticamente não se usam mais (pra que serve mesmo o caracter 0x17, “end of transmission block”?). Dada a sua idade, é uma sorte que ele tenha letras minúsculas, porque na época era comum economizar bits usando só letras maiúsculas… E eu aqui reclamando da falta de acentos nele!

Apesar de tudo isso, o ASCII tem uns detalhes de design muito interessantes quando se olha os valores hexadecimais de seus caracteres:

  • Os dígitos de 0 a 9 são codificados com valores de 0x30 a 0x39
  • As letras maiúsculas começam em 0x41 e as minúsculas em 0x61 (se nosso alfabeto tivesse só 15 letras, caberia direitinho até 0x4f e 0x6f, mas como não tem, Z e z acabaram ficando em 0x5a e 0x7a)
  • Olhando a tabela, vemos seqüências de três caracteres como [ \ ] e { | }. Por que não colocar os pares de colchetes e chaves juntos na tabela? Olhe os códigos [ = 0x5b, ] = 0x5d, { = 0x7b, } = 0x7d. Viram? O b abre e o d fecha, como um espelho!
  • Tá certo que o par de parênteses ( e ) é 0x28 e 0x29, e o par 0x6b e 0x6d caiu nas letras k e m, mas mesmo assim é legal ver os pares que fizeram com os colchetes e chaves!

Li em algum lugar que a barra invertida \ foi inventada para poder fazer /\ e \/, que poderiam ser usados como operadores AND e OR da linguagem de programação Algol (se chegou a ser usado assim, não sei). No fim, acabou servindo como um separador de pastas, como caracter de “escape” (que dá ou tira propriedades especiais ao próximo caracter, para quem não está acostumado com o termo) e como um dos primeiros caracteres a cair quando se precisa de alguma letra especial (a posição na tabela já foi usada como Ø, ¥, Ñ, etc., pelo menos até resolverem começar a usar o oitavo bit para caracteres extras). Os colchetes e chaves também foram reaproveitados para esse propósito (ver ISO/IEC 646, o subconjunto invariante do ASCII sobre o qual eram feitas modificações).

A existência no ASCII de acentos sem letra embaixo, como ^, ` dá a entender que em alguns dispositivos ou sistemas da época era possível voltar com backspace e colocar um acento em cima de uma letra (e, de novo, li em algum lugar (que eu não lembro) que era isso mesmo). Pena que agora só sirvam para falar sobre os acentos ou como símbolos de linguagens de programação. Ainda bem que agora com o Unicode, esses desperdícios com caracteres inúteis não são mais problema e temos coisas legais como flechinhas e muitas letras acentuadas ←→×÷ŭŝś. :-)

Anúncios

3 pensamentos sobre “Curiosidades sobre ASCII

  1. Hmm, nunca que eu ia me ligar disso do 5b/5d…

    Pra mim a relíquia histórica mais legal do ASCII é o caractere DEL (ASCII 127). Ele servia pro cara que estava escrevendo em fita perfurada poder apagar erros de digitação escrevendo um DEL por cima do caractere errado. É por isso que ele tem os 7 bits ligados, ao invés de ficar junto com os outros caracteres de controle…

    • Já tinha visto esse negócio do DEL, até tinha pensado em pôr no post.

      Também já li que no início o ^ também podia ser representado por uma flecha para cima (já vi um livro sobre Pascal que dizia que ponteiros poderiam ser usados com ^ ou ↑, dependendo do computador), e o _ era pra ter sido uma flecha para a esquerda ← (talvez fosse útil para atribuição em algumas linguagens).

      Mas seria estranho se tivesse duas flechas e faltassem as outras (nem sei se tal coisa tinha sido considerada)… Bom, no fim ficou sem nenhuma.

  2. Agora que não existem mais bytes de 6 nem 9 bits, acho que ninguém mais dá bola para números octais (eu pelo menos, não), então só agora percebi que as letras e números também ficam bem organizados de acordo com os códigos octais: dígitos a partir de 60 (até 71), letras maiúsculas a partir de 101 (até 132) e letras minúsculas a partir de 141 (até 172)

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s