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