1 puan yazan GN⁺ 2 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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
  • CTRL tuş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ığında ESC(00 11011) elde edilir; bu, bit düzeyinde AND işlemi ile açıklanabilir
  • ^J neden satır sonu, ^H neden backspace, ^I neden 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ğeri biçiminde yer aldığı (küçük harflerde 60h) 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.)
  • 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ığı

  • CTRL tuş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([) AND 00 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 -A ile incelendiğinde ^M gö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.

Henüz yorum yok.