Mustafa Kemal Üniversitesi Bilgisayar Mühendisliği Bölümü Ders Materyal Ve Notları

Sponsor

14 Temmuz 2014 Pazartesi

Bit ve Byte kavramı, Renk derinlikleri

Posted by samgar at 12:29 0 Comments

Bit , byte ne demektir, Dosyalar nasıl saklanır.? Hepimiz duymuşuzdur 32 bit , 16 bit , 4096 renk gibi çeşitli renk derinlikleri vardır. Fakat bu bit ne demektir, kaç bit kaç renge eşdeğerdir. Arka planda renkler nasıl hazırlanır. Hex in mantığı nedir? Gibi sorulara yanıt bulacağınız bir makale.

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.
         2li bit grubunun alacağı farklı değerler adedi
Sayaç
1.bit
2bit
1
0
0
2
0
1
3
1
0
4
1
1
22 = 4
3lü bit grubunun alacağı farklı değerler adedi
Sayaç
1.bit
2.bit
3.bit
1
0
0
0
2
0
0
1
3
0
1
0
4
0
1
1
5
1
0
0
6
1
0
1
7
1
1
0
8
1
1
1
23 = 8

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)
Örnek:
A = 6
B =12

bu iki değişkeni dosyada sadece 1 byte yer kaplayacak şekilde saklayacağız.

Ondalık
İkilik
6
110
12
1100

Her iki değeri birleştirip yazarsak :
0110 – 1100 = 0110100 şeklinde dosyamıza yazabiliriz.
Dikkat edelim: Bizim programımız, bu dosyanın içeriğini görünce A değişkenine 6, B değişkenine 12 aktaracaktır. Fakat aynı dosyayı Notepad ile açmaya kalkarsak tüm byte ı okuyup karşılığı olan ASCII karakteri olan “l” harfini gösterecektir.


Onaltılık Sayı Sistemi (HEX)

tyle="MARGIN: 0cm 0cm 10pt; LINE-HEIGHT: normal">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.
Bit Hesabı

24 Bit :
En çok kullandığımız değer olduğu için en başta bu renk ile başladım. Öte yandan diğer renk derinliklerini kavramak açısından en basit renk derinliği kendisidir.
24Bit ile kastedilen 1 renk bilgisi oluşturmak için harcanacak veri miktarıdır.
Bir rengin 3 ana renk den oluştuğunu görmüştük. o yüzden 24 bit i 3 rengi oluşturmak için 8 er bitlik yani 1 er byte lık de 3 parçaya ayırıyoruz. ( her kutucuk 1 bit i temsil ediyor)
R ( kırmızı)
0
0
0
1
1
0
1
1
 = 27
G (yeşil)
0
1
0
1
1
0
1
1
 = 91
B (mavi)
1
1
1
1
1
1
1
1
 =255

fark etti iseniz 1024 * 768 boyutundaki bir resim i saklayabilmek için 1024 * 768 * 24 = 18874368 bit
18874368 / 8 =  2359296 byte
2359296 / 1024 = 2304 kb
2304 / 1024 =  2,25 Mb
belleğe ihtiyacımız var demektir. BMP formatında resimler bu şekilde yalın saklandıkları için gayet büyük boyutlara sahiptir. Siz resmi jpg de saklasanız bellekte o resim bu hale dönüşecektir. Oyunlarda çözünürlük ve renk derinliğini düşürmenin gerekliliği de budur
Bir de şu açıdan düşünün 32mb lık belleğimiz olduğu zamanlarda birkaç resim açtığımızda belleğin halini düşünün. Eski oyun cihazlarımızın zamanında 1mb bile bellek yok iken renkli görüntüler verebiliyordu.
32 Bit:
        
En çok bildiğimiz, hepimizin masaüstü derinliği olan seçimimiz. RGB’nin 24bitlik bir kavram olduğunu biliyoruz peki 32bit nasıl oluyor?  Diye düşünebilirsiniz, doğruda düşünürsünüz çünkü 32bit aslında 24bit + 8bit  şeklinde dedir ilave 8 bit şeffaflık değerini temsil eder. Bu 8bitlik şeffaflık kanalına “Alpha Channel” denilmekte.
15 Bit:
Her renk için 5 er bitlik değere sahip olan renk derinliğidir. Bildiğiniz gibi dosyalama 8katlarıyla yapıldığı için 1bit boşa harcanmaktadır bu renk derinliğinde. Her renk 25 = 32 farklı ton, her piksel 32 * 32 * 32 = 32768 renk alabilmektedir.
24 bit de her RGB değeri 1er artmaktadır bu sistemde ise 8er artış söz konusudur. Öyle ki 24bit resimde 1 ton kırmızı artımak 200-200-200 den -> 201-200-200 iken 15 bit de bu artış minimum 208-200-200 şeklinde olmaktadır.
16 Bit:
Asimetrik dizilişe sahip renk derinliğidir. 15bit de 1 bit in boşa harcandığını biliyoruz. 16bit de bu 1bit yeşile (insan gözü yeşil renge daha duyarlıdır) eklenmiştir. Yani yeşil renk 6bit 26 = 64 tondur ve her piksel 32 * 64 * 32 = 65536 renk alabilmektedir. 15bit de olduğu gibi Kırmızı ve Mavi tonları RGB ’ye göre 8er, yeşil ise 4 er artış-azalış göstermektedir.
12 Bit:

Daha çok cep telefonlarından duyduğumuz bu renk derinliği piksel başına 4bit ton saklar bu da her ton için 2= 16 tondur ve her piksel 16 * 16 * 16 = 4096 renk alabilmektedir. Fakat dikkat edecek olursanız 8 in katı olan bir gruplama yok gibi görünür. Fakat biraz daha dikkat edin.
12 bit in dosyada saklanışı:
___________________|___________________|
1110 0011 0111 0110 0101 0011 0010 1100
KKKK YYYY MMMM KKKK YYYY MMMM KKKK YYYY
Şeklinde 8erli gruplanabilmektedir. Fakat resmin çözünürlüğü taşma-eksik olmayacak şekilde ayarlanmalıdır. Bu yöntem bellekten büyük ölçüde fayda sağlar, bu tip renklerde palet sistemi uygulanır.
8 Bit:
8bit nam-ı diğer 256renk bu sistemde renkler kanallara ayrılmamıştır. Her nasıl ASCII de her byte değeri bir karakteri simgeliyorsa. Bu sistemde de her byte değeri bir renk simgelemektedir. Renkler ya sistem den alınır ya da dosyalar içlerinde bir renk paleti (bir sözlük) barındırır, bu palette hangi değerin hangi değere karşılık geldiği yazar. GIF formatında bu değerlerden 1i şeffaf rengi temsil eder. ICO formatında 1 i seçili şeffaf ı 1, seçili olmayan şeffaf ı temsil eder.


4 bit:
Nam-ı diğer 16renk 1byte 2piksel için farklı renk bilgisi taşır. 24 = 16 farklı renk üretilebilir. 8bit de olduğu gibi palet ya da sistem paletini kullanır.
1 Bit:
Fotokopi makinelerindeki siyah-beyaz dır. Bitin 0 olmasında renk siyahtır 1 olmasında beyazdır.

Bu Yayını Paylaş

Takipçi Ol

Mail adresinizi kaydedelim ilk sizin haberiniz olsun.

0 yorum:

Sponsor

Yazılarım Korunuyor

Yandex Metrica

Yandex.Metrica

Toplam Sayfa Görüntüleme Sayısı

back to top