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

Yorumlar

Bu blogdaki popüler yayınlar

Arduino DHT11 Kullanımı - Arduino Kod - Arduino Termometre yapımı

Arduino ile voltaj okuma | Arduino ile voltmetre | Arduino ADC örnek Kod

Arduino Oled Ekran Kullanımı | SSD1306 Detaylı Tüm Fonksiyonlar

Arduino 16x2 (2x16) LCD Ekran Kullanımı | 4bit parallel mode - 16x2 LCD ekran pin bağlantıları

Arduino ile Yüksek Voltaj Ölçme | SMPS DC Bara Ölçümü

Arduino UNO güç özellikleri

Arduino LM35 Sıcaklık Sensörü İle Sıcaklık Ölçme

16x2 Lcd Türkçe Karakter Sorunu Çözüldü! Arduino LCD ekrana yazı yazma - Arduino 16x2 Lcd ekran kullanımı

Arduino Röle Modül Kullanımı

DMD2TUR | Arduino P10 Led Panel için Türkçe Karakter Desteği | Arduino P10 Led panel Türkçe yazı yazma