ASCII tablosuna 4 sütunda bakmak (2017)
(garbagecollected.org)- ASCII, 7 bitin üst 2 biti (grup) ve alt 5 biti (değer) olarak ayrılıp 4 sütunlu bir tabloya yerleştirildiğinde, kontrol karakterleri ile yazdırılabilir karakterler arasındaki ilişki hemen ortaya çıkıyor
CTRLtuşu, girilen karakterin üst bitlerini 0 yaparak aynı alt 5 biti paylaşan bir kontrol karakteri (control character) üretir- Örneğin
[(10 11011) karakterinde CTRL'e basıldığındaESC(00 11011) elde edilir; bu, bit düzeyinde AND işlemi ile açıklanabilir ^Jneden satır sonu,^Hneden backspace,^Ineden tab sorusunun yanıtı da aynı yapıda yatıyor; Windows metin dosyalarındaki^M(CR) gösterimi de aynı ilkeye dayanıyor- Yaygın ASCII tabloları bu deseni gizler, ancak 32'şerlik sütunlara ayırınca tasarım niyeti açıkça görünür
4 sütunlu ASCII tablosunun keşfi
- Hacker News kullanıcısı soneil, ASCII tablosunun 32'şerlik 4 sütun halinde düzenlenmiş bir sürümünü paylaştı
- Bu düzen sayesinde büyük/küçük harf dönüşümünün tek bitlik bir fark olduğu ve alfabenin
40h + sıra değeribiçiminde yer aldığı (küçük harflerde60h) anında görülebiliyor ^\[ifadesinin neden ESC olduğu da bu tabloda doğrudan anlaşılabiliyor
ASCII'nin 7 bitlik kodlama yapısı
- ASCII, 7 bitlik bir kodlamadır; ilk 2 bit 4 grubu, son 5 bit ise 32 değeri gösterir
- Grup
00: kontrol karakterleri (NUL, SOH, STX, ESC vb.) - Grup
01: özel karakterler ve rakamlar (Spc, !, ", # vb.) - Grup
10: büyük harf alfabesi (@, A, B, C vb.) - Grup
11: küçük harf alfabesi (`, a, b, c vb.)
- Grup
- Aynı satırdaki karakterler aynı alt 5 biti paylaşır; sadece grup bitleri farklıdır
4 sütunlu ASCII tablosu
| Bit | 00 (kontrol) | 01 (özel/rakam) | 10 (büyük harf) | 11 (küçük harf) |
|---|---|---|---|---|
| 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 tuşunun çalışma mantığı
CTRLtuşuna basıldığında girilen karakterin üst bitleri sıfırlanır ve karakter kontrol karakterleri grubuna (00) taşınır- Bu durum bit düzeyinde AND işlemi ile gösterilebilir:
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- Bu nedenle
CTRL+[kombinasyonunun ESC üretmesi keyfi bir atama değil, bit işlemlerine dayalı bir tasarımdır
Pratik örnekler
^J(CTRL+J) LF (satır sonu),^H(CTRL+H) BS (backspace),^I(CTRL+I) ise TAB üretir- Windows metin dosyaları
cat -Aile incelendiğinde^Mgörünür; bunun nedeni Windows satır sonunun CR+LF biçiminde olmasıdır - vim kullanıcılarının terminalde ESC yerine
CTRL+[kullanması da bu bit yapısından kaynaklanır
Henüz yorum yok.