C++ Dersleri | Bit işlemleri - Bitwise And - C++ ve operatörü &

 C++ bitwise and (ve operatörü) & , dijital elektronikten bildiğimiz ve kapısıyla aynı mantıkla çalışmaktadır, iki operandı bulunup, her iki operand da doğru ise doğru (true) sonucunu üretir, diğer tüm olaslıklarda yanlış (false) sonucunu üretir. C++ ve operatörü için doğruluk tablosunu bir görsel ile paylaşalım :

cpp and operator truth table

kodlarken de aynı isimdeki değişkenleri kullanalım:

int main()
{
	int a = 7;		//0111
	int b = 13;		//1101
	int aANDb = a & b;	//0101
	cout << "a=" << a << ", b=" << b << ", a&b=" << aANDb;
}

programın çıktısı şu şekilde :  a=7, b=13, a&b=5 

Sonuç olarak 5 elde ettik, C++ 'ın bu hesaplamayı nasıl yaptığını alttaki görselde açıklamaya çalıştım:

Adım adım and işlemi

Her sütunu kendi içinde and işlemine tabi tutup aynı haneye cevap olarak döndürüyor. Bu operatörün kendi başına değişkenin değerinde bir değişiklik yapmadığını unutmayın, a değişkenini 5 rakamıyla and işlemine tabi tutup çıkan değeri a ' ya atamak için mutlaka eşittir operatörü kullanmak gerekiyor:

int main()
{
	int a = 7;			//0111
	a & 5;
	cout << "a=" << a << endl;
	a &= 5; // => a = a & 5;
	cout << "a=" << a << endl;
}

ilk satır 7 çıktısını verirken, ikinci satırda 7 & 5 in sonucu olan 5 değerini görebiliriz.

Bitwise operatörlerden bahsettiğimiz ilk bölümde dediğimiz gibi bitwise operatörler çoğunlukla gömülü sistemlerde karşımıza çıkar; and operatörü için register seviyesinde bir atmega328p programladığımızı düşünelim, kodumuzun önceki kısımlarında da PORTB 'nin 3. pinini çıkış olarak ayarladığımızı ve şimdide 2.pinini giriş olarak ayarlamak istediğimizi kabul edelim.

  DDRB =  0b00001000; // 3 pini giriş olarak ayarladık
  DDRB &= 0b11111011; // 3 pini giriş olarak ayarladığımız
                       // konfigurasyona zarar vermeden 2 pini
                       // giriş olarak ayarladık

Bunu yaptığınız zaman hem 2. pinin (en sağdan 0 dan başlayarak sola doğru sayıyoruz-MSB -LSB dizilimi) giriş olarak ayarlanmasını garanti etmiş olursunuz: çünkü eski konfigurasyonu ne olursa olsun biz & ile birlikte o pin için 0 gönderdiğimiz için sonucun 0 üretmesini garanti altına almış oluyoruz, hem de diğer bütün pinleri 1 ile and işlemine tabi tutarak evvelce 1 iseler 1 kalmalarını 0 iseler sıfır kalmalarını garantilemiş oluyoruz. Aynı mantıkla pinin dijital seviyesini de bu şekilde LOW 'a çekmeyi garantileyebilirsiniz.

Kafanıza takılan her şeyi lütfen yorumlarda sormaktan çekinmeyin, Şimdilik herkese kolay gelsin



Önceki konu :  Bitwise XOR, Özel Veya Operatörü

Sonraki konu : Bitwise Operatörleri | Left Shift Operatör

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...