- Nếu chia ASCII thành 7 bit gồm 2 bit cao (nhóm) và 5 bit thấp (giá trị) rồi sắp xếp thành bảng 4 cột, mối quan hệ giữa ký tự điều khiển và ký tự có thể in ra sẽ lộ rõ ngay lập tức
- Phím
CTRL hoạt động bằng cách đưa các bit cao của ký tự đầu vào về 0, từ đó tạo ra ký tự điều khiển (control character) có cùng 5 bit thấp
- Ví dụ, khi nhấn CTRL với
[(10 11011) sẽ thu được ESC(00 11011), điều này có thể giải thích bằng phép toán bit AND
- Lý do
^J là xuống dòng, ^H là backspace, ^I là tab cũng xuất phát từ cùng một cấu trúc; cách hiển thị ^M(CR) trong file văn bản Windows cũng theo đúng nguyên lý đó
- Các bảng ASCII thông thường che khuất mẫu này, nhưng nếu chia cột theo từng 32 ký tự thì ý đồ thiết kế sẽ hiện ra rất rõ
Phát hiện về bảng ASCII 4 cột
Cấu trúc mã hóa 7 bit của ASCII
- ASCII là mã hóa 7 bit, trong đó 2 bit đầu biểu thị 4 nhóm, còn 5 bit sau biểu thị 32 giá trị
- Nhóm
00: ký tự điều khiển (NUL, SOH, STX, ESC, v.v.)
- Nhóm
01: ký tự đặc biệt và chữ số (Spc, !, ", #, v.v.)
- Nhóm
10: chữ cái in hoa (@, A, B, C, v.v.)
- Nhóm
11: chữ cái in thường (`, a, b, c, v.v.)
- Các ký tự nằm trên cùng một hàng có 5 bit thấp giống hệt nhau, chỉ khác ở bit nhóm
Bảng ASCII 4 cột
| Bit |
00 (điều khiển) |
01 (đặc biệt/số) |
10 (in hoa) |
11 (in thường) |
| 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ách hoạt động của phím CTRL
- Khi nhấn phím
CTRL, các bit cao của ký tự đầu vào được đặt về 0, khiến ký tự chuyển sang nhóm ký tự điều khiển (00)
- Điều này có thể biểu diễn bằng phép toán bit AND:
10 11011([) AND 00 11111(CTRL) = 00 11011(ESC)
- Vì vậy, việc
CTRL+[ tạo ra ESC không phải là gán ngẫu nhiên mà là một thiết kế dựa trên phép toán bit
Ví dụ thực tiễn
^J(CTRL+J) là LF (xuống dòng), ^H(CTRL+H) là BS (backspace), ^I(CTRL+I) là TAB
- Khi kiểm tra file văn bản Windows bằng
cat -A, bạn sẽ thấy ^M, vì xuống dòng của Windows dùng kiểu CR+LF
- Việc người dùng vim trong terminal dùng
CTRL+[ thay cho ESC cũng bắt nguồn từ cấu trúc bit này
Chưa có bình luận nào.