Atualizado no blog novo.
Código ASCII é a codificação de caracteres para valores numéricos de 7 bits mais aceita mundialmente e significa American Standard Code for Information Interchange – portanto, nada de ASC-2, por favor.
O ASCII não permite acentos ou diacríticos, apenas os caracteres mais comuns e uma série de 33 caracteres de controle. Porém, como a menor palavra binária (sequência de bits) usada é o byte, que usa 8 bits, um a mais que o ASCII, é possível criar supersets com o dobro1 da capacidade como, por exemplo, o Latin-1 e o CP-1252.
Para quem está começando a tentar entender o código ASCII, é preciso saber que ele é composto de grupos. O primeiro grupo é o que possui sequência binária
00xxxxx
, ou seja, dois zeros nas primeiras casas e qualquer combinação nas 5 seguintes. Isso dá uma combinação de 32 caracteres, com código de 0 (0000000
) a 31 (0011111
), e consiste nos caracteres de controle, como nulo (0), os caracteres de mudança de linha (10 e 13), o backspace (8), o escape (27) e o tab (9).Há uma exceção, um carácter de controle perdido fora dessa sequência: o delete (127 –
1111111
).O grupo seguinte,
010xxxx
(32 a 47) é uma sequência de caracteres de pontuação e símbolos matemáticos, a começar pelo espaço (32).Então começam os números, dentro do grupo
011xxxx
. Os números começam em 0110000
(48) e seguem até 0111001
(57). Uma forma fácil de pensar qual o código de um dígito numérico é somar 48 ao valor do número. Por exemplo, o código de 7
é (48+7=) 55.O grupo
011xxxx
segue com mais pontuações e símbolos matemáticos.O o grupo seguinte é o das letras maiúsculas:
10xxxxx
. O primeiro elemento, 64 (1000000
), é o arroba (@
), seguido das letras. Para saber o código de uma letra é só somar 64 ao índice da letra no alfabeto. Por exemplo, a letra F
é 6ª letra do alfabeto, portanto seu código é (64+6=) 70.Depois do
Z
(90), continuam mais pontuações e símbolos matemáticos, terminando com underscore (–
, 95 – 1011111
).A próxima sequência, começando pela crase, são as letras minúsculas. A sequência é idêntica à anterior, apenas trocando o 6º bit (da direita pra esquerda) por 1:
11xxxxx
, o que soma 32 ao número, e as letras coincidem o mesmo código.Ou seja, se o código de
F
é 70, o código de f
é (70+32=) 102.Como esperado, a sequência após o
z
(122) continua com pontuações e símbolos matemáticos.
Exemplo
Como exemplo, vamos codificar a palavraKodumaro
:K = 64 + 11 = 75
o = 64 + 15 + 32 = 111
d = 64 + 4 + 32 = 100
u = 64 + 21 + 32 = 117
m = 64 + 13 + 32 = 109
a = 64 + 1 + 32 = 97
r = 64 + 18 + 32 = 114
o = 64 + 15 + 32 = 111
Kodumaro ≡ 75, 111, 100, 117, 109, 97, 114, 111
Se você preferir, pode pensar em bits (é incrível, mas é mais simples): o 7º bit (1º da esquerda) é sempre
1
(letra), o 6º (2º da esquerda) é 0
para maiúsculas e 1
para minúsculas, os 5 seguintes são a ordem da letra no alfabeto:A = 1 = 00001
B = 2 = 00010
C = 3 = 00011
D = 4 = 00100
E = 5 = 00101
F = 6 = 00110
G = 7 = 00111
H = 8 = 01000
I = 9 = 01001
J = 10 = 01010
K = 11 = 01011
L = 12 = 01100
M = 13 = 01101
N = 14 = 01110
O = 15 = 01111
P = 16 = 10000
Q = 17 = 10001
R = 18 = 10010
S = 19 = 10011
T = 20 = 10100
U = 21 = 10101
V = 22 = 10110
W = 23 = 10111
X = 24 = 11000
Y = 25 = 11001
Z = 26 = 11010
Voltando ao
Kodumaro
:K = (letra)(maiúscula)11ª – 1.0.01011 – 1001011
o = (letra)(minúscula)15ª – 1.1.01111 – 1101111
d = (letra)(minúscula) 4ª – 1.1.00100 – 1100100
u = (letra)(minúscula)21ª – 1.1.10101 – 1110101
m = (letra)(minúscula)13ª – 1.1.01101 – 1101101
a = (letra)(minúscula) 1ª – 1.1.00001 – 1100001
r = (letra)(minúscula)18ª – 1.1.10010 – 1110010
o = (letra)(minúscula)15ª – 1.1.01111 – 1101111
E de fato é assim que é codificado e armazenado:
1001011.1101111.1100100.1110101.1101101.1100001.1110010.1101111
Ou melhor, em bytes:
0100101101101111011001000111010101101101011000010111001001101111
[]’s
Cacilhας, La Batalema
1A cada bit que se acrescenta a uma palavra binária, sua quantidade de combinações dobra.