Tabela ASCII em 4 colunas (2017)
(garbagecollected.org)- Ao dividir o ASCII em 7 bits entre os 2 bits mais altos (grupo) e os 5 bits mais baixos (valor) e organizá-lo em uma tabela de 4 colunas, a relação entre caracteres de controle e caracteres imprimíveis fica imediatamente evidente
- A tecla
CTRLfunciona zerando os bits mais altos do caractere digitado, gerando um caractere de controle (control character) que compartilha os mesmos 5 bits mais baixos - Por exemplo, ao pressionar CTRL em
[(10 11011), ele se tornaESC(00 11011), o que pode ser explicado por uma operação AND de bits - A mesma estrutura explica por que
^Jé quebra de linha,^Hé backspace e^Ié tab, assim como a exibição de^M(CR) em arquivos de texto do Windows - Tabelas ASCII convencionais escondem esse padrão, mas dividir em colunas de 32 caracteres deixa clara a intenção do design
A descoberta da tabela ASCII em 4 colunas
- O usuário soneil, do Hacker News, publicou uma versão da tabela ASCII organizada em 4 colunas de 32 itens
- Com essa disposição, fica imediatamente visível que a conversão entre maiúsculas e minúsculas difere por um único bit, e que o alfabeto corresponde a
40h + valor de ordem(nas minúsculas,60h) - Também dá para ver de imediato nessa tabela por que
^\[é ESC
Estrutura da codificação ASCII de 7 bits
- ASCII é uma codificação de 7 bits, em que os 2 primeiros bits indicam 4 grupos e os 5 últimos representam 32 valores
- Grupo
00: caracteres de controle (NUL, SOH, STX, ESC etc.) - Grupo
01: caracteres especiais e números (Spc, !, ", # etc.) - Grupo
10: alfabeto maiúsculo (@, A, B, C etc.) - Grupo
11: alfabeto minúsculo (`, a, b, c etc.)
- Grupo
- Os caracteres na mesma linha compartilham os mesmos 5 bits mais baixos, mudando apenas os bits do grupo
Tabela ASCII em 4 colunas
| Bits | 00 (controle) | 01 (especial/números) | 10 (maiúsculas) | 11 (minúsculas) |
|---|---|---|---|---|
| 00000 | NUL | Spc | @ | ` |
| 00001 | SOH | ! | A | a |
| 00010 | STX | " | B | b |
| 00011 | ETX | # | C | c |
| 00100 | EOT | $ | D | d |
| 00101 | ENQ | % | E | e |
| 00110 | ACK | & | F | f |
| 00111 | BEL | ' | G | g |
| 01000 | BS | ( | H | h |
| 01001 | TAB | ) | I | i |
| 01010 | LF | * | J | j |
| 01011 | VT | + | K | k |
| 01100 | FF | , | L | l |
| 01101 | CR | - | M | m |
| 01110 | SO | . | N | n |
| 01111 | SI | / | O | o |
| 10000 | DLE | 0 | P | p |
| 10001 | DC1 | 1 | Q | q |
| 10010 | DC2 | 2 | R | r |
| 10011 | DC3 | 3 | S | s |
| 10100 | DC4 | 4 | T | t |
| 10101 | NAK | 5 | U | u |
| 10110 | SYN | 6 | V | v |
| 10111 | ETB | 7 | W | w |
| 11000 | CAN | 8 | X | x |
| 11001 | EM | 9 | Y | y |
| 11010 | SUB | : | Z | z |
| 11011 | ESC | ; | [ | { |
| 11100 | FS | < | \ | | |
| 11101 | GS | = | ] | } |
| 11110 | RS | > | ^ | ~ |
| 11111 | US | ? | _ | DEL |
Como a tecla CTRL funciona
- Ao pressionar
CTRL, os bits mais altos do caractere digitado são definidos como 0, movendo-o para o grupo de caracteres de controle (00) - Isso pode ser expresso como uma operação AND de bits:
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- Portanto, o fato de
CTRL+[gerar ESC não é uma atribuição arbitrária, mas um design baseado em operação de bits
Exemplos práticos
^J(CTRL+J) é LF (quebra de linha),^H(CTRL+H) é BS (backspace) e^I(CTRL+I) é TAB- Ao inspecionar um arquivo de texto do Windows com
cat -A, aparece^M, porque a quebra de linha do Windows usa o formato CR+LF - O fato de usuários do vim usarem
CTRL+[no terminal no lugar de ESC também vem dessa estrutura de bits
Ainda não há comentários.