08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

BİT ALANLARI<br />

Bir yapının elemanı bit seviyesinde tutulan bir tamsayı değişken olabilir. Yapıların böyle<br />

elemanlarına "bit alanı" (bit fields) denir.<br />

Bit alanları, C'nin bit seviyesinde erişime olanak veren bir aracıdır. Bit seviyesinde erişim<br />

amacıyla şüphesiz daha önceki konuda anlatılan bitsel işleçler kullanılabilir. Ancak bit<br />

alanları programcıya böyle ulaşımlar için daha kolay bir arayüz sunar.<br />

Bir yapı içinde bir bit alanı oluşturmak için özel bir sözdizim kuralına uymak gerekir.<br />

Elemanın yapı içindeki bildiriminde eleman ismini ':' atomu izler. Bu atomdan sonra bit<br />

alanının kaç bit yer kaplayacağı bilgisini gösteren bir tamsayı değişmezi yazılır. Aşağıdaki<br />

bildirimi inceleyin:<br />

struct Data {<br />

unsigned int a: 5;<br />

unsigned int b: 4;<br />

unsigned int c: 7;<br />

};<br />

struct Data isimli yapının a isimli elemanı, yapı içinde 5 bit yer kaplarken, b isimli elemanı<br />

4 bit, c isimli elemanı 7 bit yer kaplar. Yapının elemanları unsigned int türünden olduğuna<br />

göre bu türden bir nesnenin<br />

a elemanı 0 - 31<br />

b elemanı 0 -15<br />

c elemanı 0 - 127<br />

arasında tamsayı değerler tutabilir.<br />

Bit Alanı Elemanların Türleri<br />

Bir bit alanı eleman, işaretli ya da işaretsiz int türlerden olabilir. Bir bit alanı eleman<br />

gerçek sayı türlerinden olamaz. C standartları bit alanı elemanlarının char, short, long<br />

türlerinden olamayacağını belirtse de C derleyicilerin çoğu seçimlik olarak bu duruma izin<br />

verir. Taşınabilirlik açısından bit alanı elemanın bildiriminde signed ya da unsigned<br />

sözcüklerinin kullanılması yerinde olur. Çünkü derleyici yalnızca int anahtar sözcüğüyle<br />

bildirilen bir bit alanının türünü işaretli ya da işaretsiz int türü olarak alabilir.<br />

Bit alanı eleman bir dizi olamaz.<br />

Bit Alanları Neden Kullanılır:<br />

Bazı dışsal aygıtlar verileri bitsel düzeyde iletiyor olabilir.<br />

Bazı sıkıştırma işlemlerinde bir tamsayının belirli sayıda biti kullanılıyor olabilir.<br />

Bazı şifreleme işlemlerinden bir tamsayının belirli bit alanlarında yapılan kodlama yapıyor<br />

olabilir.<br />

Çok sayıda bayrak değişkeni bit alanları olarak tutulabilir.<br />

Şüphesiz bu işlemleri yapmak için bitsel işleçler de kullanılabilir. Ancak bit alanları bu<br />

işlerin yapılması için programcıya çok daha kolay bir arayüz sunar, programcının işini<br />

kolaylaştırır.<br />

Örneğin DOS işletim sistemi dosyalara ilişkin tarih ve zaman bilgilerini 16 bitlik alanlarda<br />

tutar:<br />

441

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!