Alıntı (canalpay):
> Diyelim a'nın değeri 0 olacak. Tek bite sığar. Ancak a'dan sonra gelecek karakterin a ile aynı olmadığını nasıl göstereceğiz ? Bu göstericinin her karakterden sonra yazılması gerektiğinden boyutu daha çok arttıracaktır. Bu yüzden 8 bit olarak gösterilmesi normal diye düşündüm.
Kodlama (encoding) konularından konuşmaya başladık. Bu da küçük bir bilim sayılır. :) Çok haklısın, okurken karışıklık olmayacak şekilde bir kodlama oluşturmamız gerekir.
Huffman kodlaması, en fazla kullanılan veri için özel bir şey yapmaz, diğerlerini bir şekilde işaretler:
http://en.wikipedia.org/wiki/Huffman_coding
UTF kodlamaları da ona çok benzer. Örneğin UTF-8 kodlaması, hangi baytın başlangıç baytı olduğunu, hangisinin izleyen bayt olduğunu ilk bitlerden anlar:
Şuradaki "Encoded bytes" sütununda görülüyor:
http://en.wikipedia.org/wiki/Utf-8#Description
İlk biti 0 olanlar, ASCII tablosuna denk geliyor.
İlk üç biti 110 olanlar, "iki baytlık Unicode karakterlerinin ilk baytı" oluyor. Ondan sonraki 10 bitle başlayanlar bunların devamı oluyor.
vs.
Alıntı:
> D'de ç'yi char olarak depoladığımızda iki bayttan oluşuyor
Bellekte öyle.
Alıntı:
> iki ayrı karakter yazacağına tek karakter yazması gerektiğini nasıl belirtiyor
O iş, o iki baytın UTF-8 olduğunu bilen ortama ait. Örneğin onu konsol biliyor.
Alıntı:
> ? Biri ? işaretli oluyor ve onu karakter olarak saymayıp bir sonraki karakterin sayısal değerini o karakterin sayısal değerine mi ekliyor ?
UTF kodlamalarındaki bayt değerlerinin Unicode değerleri ile doğrudan ilgileri yok. Bir şekilde bağlılar ama yukarıda belirttiğim üst bitler nedeniyle toplama işlemi olamaz.
Alıntı:
> Ayrıca iki bayttan değilde Göktürk karakterleri gibi 4 bayttan oluşursa nasıl 4 karakter değilde tek karakter olarak düüşünüyor ?
O dört baytı değerlendiren ortam (örneğin konsol), ilk baytın 11110 bitleri ile başladığına bakarak elinde "dört bayt olarak kodlanmış bir Unicode karakteri" olduğunu anlıyor. (11110'ı yine yukarıdaki tablodan okuyorum.) Ondan sonra 3 bayt daha okuyor. O dört baytı "Binary" sütununda gösterildiği şekilde bir araya getirerek hangi Unicode karakteri olduğunu anlıyor.
Ondan sonra sıra fonta geliyor. Elindeki fontta o Unicode karakterinin şeklini buluyor ve konsola yazdırıyor.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]