Web Tasarımı - Bit ve Byte kavramı, Renk derinlikleri
Bit sistemi
Bildiğiniz gibi bilgisayar sistemleri 1’lerden ve 0’lardan anlamaktadır. Bu 1 – 0 olayı aslında işlemcide bulunan transistor ün açık ya da kapalı olma durumudur. Genel olarak da mors alfabesi sistemine benzer bir şekilde çalışmaktadır.
Bir dosya kaydedildiği zaman ya da bellekte olduğu zaman bu şekilde 1ler ve 0lar ile yer alır. İşlemcimiz bu bitleri belli parçalar halinde işler bu da sürekli duyduğumuz 32bit – 64bitlik durumdur.
Peki, nasıl oluyor da biz bu 1leri ve 0ları anlamlı şekillerde görmekteyiz? Bilgisayarımızda yüklü olan programlar ilgili dosyalardaki bitleri gruplandırarak anlamı parçacıklara çevirirler.
Örneğin:
İçerisinde 0100000101000010 şeklinde bulunan bir dosyayı:
Notepad ile açtığımız zaman bu sayıyı 8erli gruplayacak: 01000001-01000010; 01000001’i “A” ya, 01000010’i “B” ye eşitleyecek ekrana AB şeklinde yazacaktır.
Aynı dosyayı INTEGER sayı şeklinde yorumlayan bir program 16şar gruplayacak; 16706 şeklinde ekrana yansıtacaktır.
Okumaların 8in katı şeklinde yapıldığına dikkat edin –LONG değişkeni 32li gruplar ile okunacaktı- . Bu tip gruplamada amaç saklanacak değişken için gerekli en az bit grubunu harcamaktır.
Byte sistemi
Ağırlık, uzunluk ölçülerinin kat sayılarını hatırlayalım. 1cm in: 10 katı 1dm, 100 katı 1mdir. Fakat bu ölçüler 1er artmaktadır. Bitler gruplandığı zaman 2nin üsleri olacak şekilde artmaktadır. Bitleri 10 a en yakın gruplayacağımız değer: 2 ^3 yani 8 dir.
Benzer şekilde bir byte ın 1000 katını alamayacağımızdan 1000 e en yakın 2 üssü 2^10 = 1024 kullanmaktayız.
Ek bilgi:
Notepad in 8 erli gruplama yaptığını örneğimizde belirtmiştik. Peki, 01000001 i nasıl oluyor da “A” ya eşitliyor? Yıllar önce bilgisayar sistemleri yine 8 erli gruplama yapmaktaydı fakat bu bitlerden 1 tanesi kontrol biti olarak kullanılmaktaydı ( terminal uygulamalarında gelen verinin doğruluğunu kontrol etmek için) bu sebepten kalan 7bit ( 27 = 128) çeşitli Latin karakterlerine eşitlendi. Bu 128 eşitliğin bir kısmı ekranı ve yazıcıyı kontrol eden özel karakterler olarak belirlendi. Daha sonraları kalan 1bit de bu karakter set ine dahil edildi (28 = 256) ve yeni 128 karakter işletim sistemine bırakıldı. Böylelikle diğer dillerin harfleri işletim sisteminde yapılacak bir seçimle ekrana, yazıcıya gönderebilir duruma geldi. Daha sonra bu sistem geriye uyumlu olarak geliştirilip Unicode sistemleri yaratıldı.
Dosyaları 8in katları şeklinde okuyup-yazabileceğimizi yukarıda belirtmiştik. Fakat bu demek değildir ki bu bitleri parçalayamayız.
örnek bir program düşünelim, programımızda 2 tane değişken var , her ikisi de 0 – 15 arası değerler alabilmekte, bunu dosyaya en az yer işgal edecek şekilde kaydetmek istiyoruz. (ya da bir web uygulaması olabilir amacımız daha az bant genişliği kullanmaktır)
Onaltılık Sayı Sistemi (HEX)
1byte’ın 256 farklı değer aldığını biliyoruz. Bu 256 tane farklı durumu ASCII karakterleri ile sembolize edebileceğimizi biliyorsunuz. Fakat ASCII’nin bazı karakterleri ekranda gözükmez, kimisi anlaşılmaz, yarısı dil kütüphanelerine göre değişir. Ayrıca hangi karakterin hangi sayıya karşılık geldiğini ezberlemek çok zordur. Ezberlense bile İngilizce ASCII’yi öğrenen birisi farklı dildeki karşılığını bilemez.
Eğer bu değerleri 0 – 255 şeklinde yazmak istersek
Örnek:
RGB kodunu (temel bilginiz yok ise aşağıdaki konuya göz atabilirsiniz) sembolize etmek istiyorsak şöyle bir ifade kullanabiliriz:
A =255049001 // 255–049-001
bu tip gösterme biçimi gayet anlaşılır olsa da gerek israf edilen veri (256 – 999 arası değerler) gerekse renklerle ilgili işlemler için hiç de uygun bir saklama yöntemi değildir. Çünkü normalde 24 bit = 16 milyon farklı değer üretirken bu şekilde saklama 999milyon farklı değer alabilmekte 983 milyon gereksiz veriye eşittir.
O zaman öyle bir gösterme biçimi bulalım ki hiç israf olmasın ve bytelar ile çok rahat işlem yapılabilmesini sağlasın.
Ek bilgi :
Bir sayı sisteminde 9 dan sonra gelen rakamlar harfler ile karakterize edilir. 10 = A , 11 = B , 16 = F gibi.
Bir sayı sisteminde belirli bir basamağa kadar oluşturulabilecek sayı adedi o sistemi temsil eden sayının üsleri ile hesaplanabilir. Örneğin: 10luk sistemde 3. Basamağa kadar oluşturulabilecek sayı adedi 102 = 100 (0 – 99) ; 16lık sayı sisteminde 162 = 256 (0 – FF)
16lık sayı sisteminde 2 basamaklı sayılar 256 farklı değer alabildiği için tüm byte değerlerini artma – eksik olmadan tutabilmektedir. Ayrıca tam basamak geçişi olduğu için sadece tek işlemle bytelar ile oynama yapılabilmektedir.
Örnek:
RGB değerleri 255-049-001 olan rengi saklayan değişkende yeşil tonunu 10 ton artırın :
eğer 10dalık sayı sisteminde saklıyor olsa idik A = 255049001 olacaktı burada KKKYYYMMM yeşil basamağına 10 eklememiz yani A = A + 10000 dememiz yeterli olacaktı.
aynı işlem HEX’de de bu kadar rahat yapılmaktadır : A = FF3101 olan renk eşitliğimize 10 ton yeşil vermek için KKYYMM ; A = A + 0A00
işlemi yeterli olacaktır.
Renklerin Monitörlerde Oluşumu ve RGB
Sulu boya ile renk karmaya çalışırsak sarı ile mavi yi birleştirdiğimizde yeşil elde ederiz, fakat ışık dalgaları ile bunu oluşturmak istediğimiz de durum biraz farklı oluyor. Elimizde 3 adet , bir yeşil , bir mavi , bir de kırmızı ışık kaynağı alsak 3 nün birleşimi bize beyaz ışık sunacaktır. Eğer mavi yi söndürecek olursak sarı bir ışık elde ederiz.
Lcd monitörler de tam bu şekilde çalışmaktadırlar. Her renk üreten hücreye piksel adını veriyoruz. Crt monitörlerde ise bu renklere sahip tabaklara arkadan belli güçte ışık verilerek renk elde ediyoruz.Konu ile ilgili ingilizce detaylar için :
http://en.wikipedia.org/wiki/Rgb adresini kullanabilirsiniz.
Renklerin farklı parlaklık seviylerinde farklı renkler ürettiğini biliyoruz. RGB ise her renk için 256 adet parlaklık seviyesi belirlenmiş bir modeldir. Yani 24bit (gerçek renk) e eşittir. Evlerimizdeki bilgisayarlar bu standardı destekler. Çok nadir bazı monitörler ve ekran kartları 48bit renk derinliğine çıkabilmektedir.
Daha detaylı bilgi için
Dosyayı indirmek için
tıkla