C++ Dersleri | Bitwise Operatörleri | Right Shift Operatör

 C++ bitwise operatörlerden right shift operatörünü konu alıyoruz >> . Right shift operatörü,  C++ Dersleri | Bitwise Operatörleri | Left Shift Operatör konusunda bahsettiğimiz tüm özellikleri taşıyor, tek farkla : bit dizisini sağa doğru kaydırıyor. Bir örnekle right shift operatörünün nasıl kullanıldığına bakalım:

int main()
{
	int a = 2;	// 0010b
	int b = a >> 1;	// 0001b
	cout << "a=" << a << ", b=" << b;
}

çıktımız şu şekilde :  a=2, b=1 

Kolayca anlayabileceğimiz şekilde a değişkeni için oluşan binary sistem diziliminde indexlemeye göre 1. bit hanesinde yer alan operatöre gönderdiğimiz sayı :1 adedince sağ tarafa kaydırılmış. Left Shift operatörü için sayıyı 2 'nin kuvvetleriyle çarpmakla aynı şey demiştik, burada olan da sayıyı 2 'nin kuvvetleriyle bölmekle aynı şeydir. a değişkeninin değeri olan 2 'yi 2^1 'e (bu 1 operatöre gönderilen 1) bölerek 1 elde etmiş olduk:

Farklı sayılarla denememiz gerekirse :

int main()
{
	int a = 44;		
	int b = a >> 2;
	cout << "a=" << a << ", b=" << b; // 44/2^2 -> 44/4 -> b=11 çıktısını üretir.
	a = 128;
	b = a >> 5;
	cout << "a=" << a << ", b=" << b; //128/2^5 ->128/32 -> b = 4 çıktısını üretir.
}

Yine, left shift operatöründe olduğu gibi kaydırma operatörüne gönderdiğimiz kaç bit kaydırılacağı değeri, negatif olamaz Önemli bir nokta daha işaretli sayılarla çalışıyorsak şayet, bit kaydırması yapılacak operandın yani a değişkeninin de pozitif olması gerekir, negatif sayılardaki davranışı da işlemi yapacağını garanti etmez ve undefined behavior olarak tanımlanır.

Son olarak bu operatörün operandlar üzerinde değer değiştirmediğini unutmayın diyelim :

int main()
{
	int a = 2;
	a >> 1;
	cout << "a=" << a << endl;  // a=2
	a >>= 1;
	cout << "a=" << a << endl;  // a=1
}

yani a >> 1 yaparak a 'nın değerini değiştiremeyiz, eşittir operatörünü kullanmak durumundayız :)

Herkese kolay gelsin.



Önceki konu:  C++ Left Shift Operatörü

Sonraki Konu: C++ ile Bit Manipülasyonları


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