ASCII-Tabelle in 4 Spalten betrachtet (2017)
(garbagecollected.org)- Wenn man ASCII in 7 Bit in die oberen 2 Bit (Gruppe) und die unteren 5 Bit (Wert) aufteilt und als 4-Spalten-Tabelle anordnet, wird die Beziehung zwischen Steuerzeichen und druckbaren Zeichen sofort sichtbar
- Die
CTRL-Taste erzeugt Steuerzeichen (control characters) mit denselben unteren 5 Bit, indem sie die oberen Bits des eingegebenen Zeichens auf 0 setzt - Drückt man zum Beispiel bei
[(10 11011) zusätzlich CTRL, wird darausESC(00 11011), was sich durch eine bitweise AND-Operation erklären lässt - Warum
^Jein Zeilenumbruch,^Hein Backspace und^Iein Tab ist, folgt derselben Struktur; auch die Anzeige von^M(CR) in Windows-Textdateien beruht auf demselben Prinzip - Gewöhnliche ASCII-Tabellen verbergen dieses Muster, aber wenn man die Spalten in Gruppen zu je 32 Zeichen aufteilt, wird die Designabsicht klar erkennbar
Entdeckung der 4-Spalten-ASCII-Tabelle
- Der Hacker-News-Nutzer soneil veröffentlichte eine Version der ASCII-Tabelle, die in 4 Spalten zu je 32 Zeichen angeordnet ist
- Durch diese Anordnung lässt sich sofort erkennen, dass der Wechsel zwischen Groß- und Kleinbuchstaben nur ein einzelnes Bit Unterschied ist und dass das Alphabet als
40h + Positionswertkodiert ist (bei Kleinbuchstaben60h) - Auch warum
^\[für ESC steht, ist in dieser Tabelle direkt zu sehen
Struktur der 7-Bit-ASCII-Kodierung
- ASCII ist eine 7-Bit-Kodierung; die ersten 2 Bit stehen für 4 Gruppen und die letzten 5 Bit für 32 Werte
- Gruppe
00: Steuerzeichen (NUL, SOH, STX, ESC usw.) - Gruppe
01: Sonderzeichen und Zahlen (Spc, !, ", # usw.) - Gruppe
10: Großbuchstaben (@, A, B, C usw.) - Gruppe
11: Kleinbuchstaben (`, a, b, c usw.)
- Gruppe
- Zeichen in derselben Zeile haben dieselben unteren 5 Bit; nur die Gruppen-Bits unterscheiden sich
4-Spalten-ASCII-Tabelle
| Bit | 00 (Steuerung) | 01 (Sonderzeichen/Zahlen) | 10 (Großbuchstaben) | 11 (Kleinbuchstaben) |
|---|---|---|---|---|
| 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 |
Funktionsweise der CTRL-Taste
- Wenn man die
CTRL-Taste drückt, werden die oberen Bits des eingegebenen Zeichens auf 0 gesetzt, wodurch es in die Gruppe der Steuerzeichen (00) verschoben wird - Das lässt sich als bitweise AND-Operation ausdrücken:
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- Deshalb ist es kein willkürliches Mapping, dass
CTRL+[ESC erzeugt, sondern ein auf Bitoperationen basierendes Design
Praktische Beispiele
^J(CTRL+J) ist LF (Zeilenumbruch),^H(CTRL+H) ist BS (Backspace), und^I(CTRL+I) ist TAB- Wenn man Windows-Textdateien mit
cat -Abetrachtet, erscheint^M, weil Windows-Zeilenenden aus CR+LF bestehen - Dass vim-Nutzer im Terminal
CTRL+[anstelle von ESC verwenden, geht ebenfalls auf diese Bitstruktur zurück
Noch keine Kommentare.