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