1 điểm bởi GN⁺ 2 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Nếu chia ASCII thành 7 bit gồm 2 bit cao (nhóm)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.

Chưa có bình luận nào.