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ı


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