- Jika ASCII dibagi menjadi 7 bit, yaitu 2 bit teratas (grup) dan 5 bit terbawah (nilai), lalu disusun dalam tabel 4 kolom, hubungan antara karakter kontrol dan karakter cetak langsung terlihat
- Tombol
CTRL bekerja dengan menjadikan bit-bit atas dari karakter yang dimasukkan menjadi 0, sehingga menghasilkan karakter kontrol (control character) yang berbagi 5 bit terbawah yang sama
- Misalnya, jika
[(10 11011) ditekan bersama CTRL, hasilnya menjadi ESC(00 11011), yang dapat dijelaskan dengan operasi bit AND
- Alasan
^J adalah line feed, ^H adalah backspace, dan ^I adalah tab juga berasal dari struktur yang sama; tampilan ^M(CR) pada file teks Windows pun mengikuti prinsip ini
- Tabel ASCII yang umum dipakai biasanya menyembunyikan pola ini, tetapi jika dibagi per 32 karakter ke dalam kolom, maksud desainnya menjadi sangat jelas
Penemuan tabel ASCII 4 kolom
- Pengguna Hacker News soneil memposting versi tabel ASCII yang disusun dalam 4 kolom per 32 karakter
- Melalui susunan ini, langsung terlihat bahwa peralihan huruf besar/kecil hanya berbeda satu bit, dan bahwa alfabet berada pada
40h + nilai urutan (huruf kecil pada 60h)
- Mengapa
^\[ adalah ESC juga bisa langsung dikonfirmasi dari tabel ini
Struktur encoding ASCII 7 bit
- ASCII adalah encoding 7 bit; 2 bit pertama menunjukkan 4 grup, dan 5 bit terakhir merepresentasikan 32 nilai
- Grup
00: karakter kontrol (NUL, SOH, STX, ESC, dll.)
- Grup
01: karakter khusus dan angka (Spc, !, ", #, dll.)
- Grup
10: alfabet huruf besar (@, A, B, C, dll.)
- Grup
11: alfabet huruf kecil (`, a, b, c, dll.)
- Karakter yang berada pada baris yang sama memiliki 5 bit terbawah yang sama, dan hanya bit grupnya yang berbeda
Tabel ASCII 4 kolom
| Bit |
00 (kontrol) |
01 (khusus/angka) |
10 (huruf besar) |
11 (huruf kecil) |
| 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 |
Cara kerja tombol CTRL
- Saat tombol
CTRL ditekan, bit-bit atas dari karakter input diatur menjadi 0 sehingga berpindah ke grup karakter kontrol (00)
- Ini dapat dinyatakan sebagai operasi bit AND:
10 11011([) AND 00 11111(CTRL) = 00 11011(ESC)
- Karena itu,
CTRL+[ menghasilkan ESC bukan karena penetapan sewenang-wenang, melainkan desain berbasis operasi bit
Contoh praktis
^J(CTRL+J) adalah LF(line feed), ^H(CTRL+H) adalah BS(backspace), dan ^I(CTRL+I) adalah TAB
- Jika file teks Windows diperiksa dengan
cat -A, akan tampil ^M, karena line ending Windows menggunakan format CR+LF
- Alasan pengguna vim di terminal memakai
CTRL+[ sebagai pengganti ESC juga berasal dari struktur bit ini
Belum ada komentar.