• ASCII को 7-बिट में ऊपरी 2 बिट्स (group) और निचले 5 बिट्स (value) में बाँटकर 4-कॉलम टेबल में रखने से control characters और printable characters के बीच का संबंध तुरंत दिख जाता है
  • CTRL key दबाने पर इनपुट character के ऊपरी बिट्स 0 हो जाते हैं, जिससे वही निचले 5 बिट्स साझा करने वाला control character बनता है
  • उदाहरण के लिए [(10 11011) पर CTRL दबाने से ESC(00 11011) बनता है, और इसे bitwise AND operation से समझाया जा सकता है
  • ^J newline, ^H backspace, और ^I tab क्यों हैं, यह भी इसी संरचना से समझ आता है; 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 आदि)
  • एक ही 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 कैसे काम करती है

  • CTRL key दबाने पर इनपुट character के ऊपरी bits सभी 0 पर सेट हो जाते हैं, जिससे वह control character group (00) में चला जाता है
  • इसे bitwise AND operation के रूप में लिखा जा सकता है:
    • 10 11011([) AND 00 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 से आता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.