1 puntos por GN⁺ 2 시간 전 | Aún no hay comentarios. | Compartir por WhatsApp
  • 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 CTRL funciona 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 en ESC(00 11011), algo que puede explicarse con una operación AND a nivel de bits
  • La razón por la que ^J es salto de línea, ^H es retroceso y ^I es 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.)
  • 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([) AND 00 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.

Aún no hay comentarios.