>> (bitshift right)



Açıklama

Sağ kaydırma operatörü >> , sol işlenen bitlerinin sağ işlenen tarafından belirtilen konum sayısına göre sağa kaydırılmasına neden olur.

Sözdizimi

variable >> number_of_bits;

Parametreler

variable : İzin verilen veri türleri: byte , int , long .
number_of_bits : <= 32 olan bir sayı. İzin verilen veri türleri: int .

Örnek Kod

int a = 40;     // binary: 0000000000101000
int b = a >> 3; // binary: 0000000000000101, or 5 in decimal

Notlar ve Uyarılar

X'i sağa y bitleriyle (x >> y) kaydırdığınızda ve x içindeki en yüksek bit 1 olduğunda, davranış x'in kesin veri türüne bağlıdır. X int türündeyse, en yüksek bit, yukarıda tartıştığımız gibi x'in negatif olup olmadığını belirleyen işaret bitidir. Bu durumda, işaret biti ezoterik tarihsel nedenlerden dolayı daha düşük bitlere kopyalanır:

 int x = -16; // binary: 1111111111110000 int y = 3; int result = x >> y; // binary: 1111111111111110 

İşaret uzantısı olarak adlandırılan bu davranış genellikle istediğiniz davranış değildir. Bunun yerine sıfırların soldan kaydırılmasını isteyebilirsiniz. Sağ kaydırma kurallarının imzasız int ifadeleri için farklı olduğu ortaya çıkıyor, böylece soldan kopyalananları bastırmak için bir typecast kullanabilirsiniz:

 int x = -16; // binary: 1111111111110000 int y = 3; int result = (unsigned int)x >> y; // binary: 0001111111111110 

İşaret uzantısını kullanmaktan kaçınmaya dikkat ediyorsanız sağ kaydırma operatörünü >> 2 gücüne bölmenin bir yolu olarak kullanabilirsiniz. Örneğin:

 int x = 1000; int y = x >> 3; // integer division of 1000 by 8, causing y = 125. 

Ayrıca Bakınız