Browsed by
תגית: ASCII

ASCII Control Characters

ASCII Control Characters

בהמשך לפוסט על קידוד תווים מצאתי את הדף הזה, עם הסבר על תופעה מעניינת בתווי ASCII.

כזכור, 32 התווים הראשונים בטבלת ASCII הם Control Characters – תווים שאין להם ייצוג ״מודפס״ אלא רק משמעות עבור המחשב -הם מתפקדים כסיגנלים. ניתן להפעיל את התווים הללו בטרמינל באמצעות CTRL (כמובן, תווי Control) ומקש נוסף. לדוגמא – כדי להפעיל את ESC, ניתן ללחוץ על CTRL + ]. כדי להפסיק פעולה (ETX) – לחיצה על CTRL + C.

אבל… למה? מה מיוחד דווקא בצירופי המקשים האלו?

התשובה מתקבלת כאשר ניקח את טבלת ASCII, ונסדר אותה בארבעה טורים.

00 01 10 11
NUL Spc @ ` 00000
SOH ! A a 00001
STX " B b 00010
ETX # C c 00011
EOT $ D d 00100
ENQ % E e 00101
ACK & F f 00110
BEL ' G g 00111
BS ( H h 01000
TAB ) I i 01001
LF * J j 01010
VT + K k 01011
FF , L l 01100
CR M m 01101
SO . N n 01110
SI / O o 01111
DLE 0 P p 10000
DC1 1 Q q 10001
DC2 2 R r 10010
DC3 3 S s 10011
DC4 4 T t 10100
NAK 5 U u 10101
SYN 6 V v 10110
ETB 7 W w 10111
CAN 8 X x 11000
EM 9 Y y 11001
SUB : Z z 11010
ESC ; [ { 11011
FS < \ | 11100
GS = ] } 11101
RS > ^ ~ 11110
US ? _ DEL 11111

בכל טור 32 תווים. הטור השמאלי הוא של תווי הבקרה.

כזכור, אורכו של תו ASCII הוא 7 ביטים, מ- 0000000 עד 1111111. בכל שורה בטבלה – חמשת הביטים הימניים יהיו זהים ושני הביטים השמאליים ישתנו בהתאם לעמודה: בעמודה הראשונה הם יהיו 00, בשניה 01, וכן הלאה.

נסתכל על השורה של תו הבקרה ETX: ערכו הבינארי הוא 0000011. באותה שורה, הערך של התו C הוא 1100011.

כאשר לוחצים על CTRL ואז על מקש נוסף – אנחנו מאפסים את שני הביטים השמאליים של אותו מקש! כלומר- 1100011 הופך ל- 0000011, וכתוצאה מכך מופעל תו הבקרה ETX (הוראה של End of Text).