La tabla ASCII vista en 4 columnas (2017)
(garbagecollected.org)- Si ASCII se divide dentro de sus 7 bits en los 2 bits superiores (grupo) y los 5 bits inferiores (valor), y se acomoda en una tabla de 4 columnas, la relación entre los caracteres de control y los imprimibles se hace evidente de inmediato
- La tecla
CTRLfunciona haciendo que los bits superiores del carácter ingresado se vuelvan 0, generando así un carácter de control (control character) que comparte los mismos 5 bits inferiores - Por ejemplo, si a
[(10 11011) se le aplica CTRL, se convierte enESC(00 11011), algo que puede explicarse con una operación AND a nivel de bits - La razón por la que
^Jes salto de línea,^Hes retroceso y^Ies tabulación responde a la misma estructura; la marca^M(CR) en archivos de texto de Windows también se explica por este mismo principio - Las tablas ASCII tradicionales suelen ocultar este patrón, pero al separarlas en columnas de 32 elementos la intención de diseño queda clara
Descubrimiento de la tabla ASCII de 4 columnas
- El usuario de Hacker News soneil publicó una versión de la tabla ASCII dispuesta en 4 columnas de 32 elementos
- Con esta disposición se puede ver al instante que el cambio entre mayúsculas y minúsculas es una diferencia de un solo bit, y que el alfabeto corresponde a
40h + valor de orden(en minúsculas,60h) - También se puede comprobar de inmediato en esta tabla por qué
^\[corresponde a ESC
Estructura de la codificación ASCII de 7 bits
- ASCII es una codificación de 7 bits: los primeros 2 bits representan 4 grupos y los últimos 5 bits expresan 32 valores
- Grupo
00: caracteres de control (NUL, SOH, STX, ESC, etc.) - Grupo
01: caracteres especiales y números (Spc, !, ", #, etc.) - Grupo
10: letras mayúsculas (@, A, B, C, etc.) - Grupo
11: letras minúsculas (`, a, b, c, etc.)
- Grupo
- Los caracteres que están en la misma fila comparten los mismos 5 bits inferiores, y solo cambian los bits del grupo
Tabla ASCII de 4 columnas
| Bits | 00 (control) | 01 (especiales/números) | 10 (mayú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 |
Cómo funciona la tecla CTRL
- Al presionar
CTRL, los bits superiores del carácter ingresado se ponen en 0, moviéndolo al grupo de caracteres de control (00) - Esto puede expresarse como una operación AND a nivel de bits:
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- Por eso
CTRL+[genera ESC: no es una asignación arbitraria, sino un diseño basado en operaciones de bits
Ejemplos prácticos
^J(CTRL+J) es LF(salto de línea),^H(CTRL+H) es BS(retroceso) y^I(CTRL+I) es TAB- Si revisas un archivo de texto de Windows con
cat -A, aparece^M, porque el salto de línea en Windows usa el esquema CR+LF - El hecho de que usuarios de vim usen
CTRL+[en la terminal en lugar de ESC también proviene de esta estructura de bits
Aún no hay comentarios.