4 कॉलम में ASCII टेबल देखना (2017)
(garbagecollected.org)- ASCII को 7-बिट में ऊपरी 2 बिट्स (group) और निचले 5 बिट्स (value) में बाँटकर 4-कॉलम टेबल में रखने से control characters और printable characters के बीच का संबंध तुरंत दिख जाता है
CTRLkey दबाने पर इनपुट character के ऊपरी बिट्स 0 हो जाते हैं, जिससे वही निचले 5 बिट्स साझा करने वाला control character बनता है- उदाहरण के लिए
[(10 11011) पर CTRL दबाने सेESC(00 11011) बनता है, और इसे bitwise AND operation से समझाया जा सकता है ^Jnewline,^Hbackspace, और^Itab क्यों हैं, यह भी इसी संरचना से समझ आता है; Windows text files में दिखने वाला^M(CR) भी इसी सिद्धांत पर आधारित है- सामान्य ASCII tables इस pattern को छिपा देती हैं, लेकिन हर 32 characters पर कॉलम बाँटने से design intent साफ़ दिखता है
4-कॉलम ASCII टेबल की खोज
- Hacker News user soneil ने ASCII table का 32-32 के समूह में 4-कॉलम layout वाला version पोस्ट किया
- इस layout से तुरंत समझ आता है कि uppercase और lowercase का अंतर सिर्फ एक bit का है, और alphabet
40h + क्रम मानपर है (lowercase के लिए60h) ^\[क्यों ESC है, यह भी इस table में तुरंत देखा जा सकता है
ASCII की 7-बिट encoding संरचना
- ASCII एक 7-बिट encoding है; पहले 2 bits 4 groups दिखाते हैं और आख़िरी 5 bits 32 values व्यक्त करते हैं
- group
00: control characters (NUL, SOH, STX, ESC आदि) - group
01: special characters और digits (Spc, !, ", # आदि) - group
10: uppercase alphabet (@, A, B, C आदि) - group
11: lowercase alphabet (`, a, b, c आदि)
- group
- एक ही row में मौजूद characters के निचले 5 bits समान होते हैं, केवल group bits अलग होते हैं
4-कॉलम ASCII टेबल
| बिट | 00 (control) | 01 (special/number) | 10 (uppercase) | 11 (lowercase) |
|---|---|---|---|---|
| 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 |
CTRL key कैसे काम करती है
CTRLkey दबाने पर इनपुट character के ऊपरी bits सभी 0 पर सेट हो जाते हैं, जिससे वह control character group (00) में चला जाता है- इसे bitwise AND operation के रूप में लिखा जा सकता है:
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- इसलिए
CTRL+[से ESC बनना कोई मनमाना mapping नहीं, बल्कि bit operation पर आधारित design है
व्यावहारिक उदाहरण
^J(CTRL+J) LF (newline) है,^H(CTRL+H) BS (backspace) है, और^I(CTRL+I) TAB है- Windows text file को
cat -Aसे देखने पर^Mदिखता है, क्योंकि Windows line ending CR+LF format का उपयोग करती है - vim users का terminal में ESC की जगह
CTRL+[इस्तेमाल करना भी इसी bit structure से आता है
अभी कोई टिप्पणी नहीं है.