C++ Dersleri | Bit işlemleri - Bit Kontrol

 C++ bit işlemlerinde bir bit dizesindeki belirli bir bitin durumunu kontrol etmek için değeri elde etmek istediğimiz bitin indeks değeri kadar right shift yapıp üzerinde and işlemi uygulayarak yapılabilir. Cümle şeklinde ifade edince bana bile anlaşılabilir gelmedi :) kodla bakalım :

int main()
{
	int a = 170;     // 10101010
	int result = (a >> 5) & 1LL;
	cout << "result=" << result << endl;  
}

 result = 5 

5. numaralı indexte yer alan bitin değerini sorguluyoruz, bu indexle kastettiğim sayma sayılarıyla değil, en sağdaki bit için 0 'dan başlayarak sayıyoruz anlamını ifade ediyor. Adım Adım şöyle gidiyor işlem :

a = 10101010 değerini   a >> 5 : 00000101 : yaptığımız zaman zaten istediğimiz bit en sağda yerini almış oluyor, bu değeri de 1 ile & işlemine tabi tutunca 1 ise 1, 0 ise döndürüyor result değişkenine. LL kullanmamızın sebebi Long Long deyip, değişkenin boyutundan bağımsız tüm veri tipleri için yapılacak işlemi garanti altına almaktır.

Şayet bitin değerine yerinde ihtiyacımız varsa; yani diğer tüm bitler 0 olacak, istediğimiz bitin değeri neyse yerinde o değer olacak, 5 için 00X00000 şeklinde

int main()
{
	int a = 170;     // 10101010
	int bitValueinPlace = a & (1LL << 5);
	cout << "result=" << bitValueinPlace << endl;
}

 result = 32 

5. biti 0 olan 218 gibi bir sayı kullansaydık; result=0 çıktısını elde etmiş olacaktık.

Kafanıza takılan herhangi birşey olursa lütfen yorumlarda sormaktan çekinmeyiniz.

Önceki konu : Bit toggle

Sonraki konu : Set Bitleri Sayma

Hiç yorum yok:

Yorum Gönder

Türksat Saat Kanalı ve IRIG-B Time Code

Türksat Saat Kanalından Saat Bilgisi Nasıl Alınır? Uyduda kanalları dolaşırken, şu Türksat Saat kanalı hep dikkatimi çekmiştir. Özellikle  S...