>>

[Bitsel Operatörler]

Açıklama

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

Sözdizimi

değişken >> bit_sayısı;

Parametreler

değişken: İzin verilen veri türleri: byte, int, long. bit_sayısı: <=32 olan bir sayı. İzin verilen veri türleri: int.

Örnek Kod

                    
                        int a = 40;     // binary: 0000000000101000
                        int b = a >> 3; // binary: 0000000000000101, veya ondalık olarak 5
                    

Notlar ve Uyarılar

x'i y bit (x >> y) sağa kaydırdığınızda ve x'teki en yüksek bit 1 olduğunda, davranış x'in tam veri türüne bağlıdır. Eğer x int türündeyse, yukarıda tartıştığımız gibi, x'in negatif olup olmadığını belirleyen en yüksek bit işaret bitidir. Bu durumda, işaret biti, ezoterik tarihsel nedenlerle 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ış, çoğu zaman istediğiniz davranış değildir. Bunun yerine, sıfırların soldan kaydırılmasını isteyebilirsiniz. Sağa kaydırma kurallarının imzasız int ifadeleri için farklı olduğu ortaya çıktı, bu nedenle 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ından kaçınmaya dikkat ederseniz, 2'nin katlarına bölmenin bir yolu olarak sağa kaydırma operatörünü >> kullanabilirsiniz. Örneğin:

                    

     int x = 1000;
     int y = x >> 3; // 1000'in 8'e tamsayı bölümü, y = 125'e neden olur.          

                    

Ayrıca Bakınız

MİSAL BitMath Eğitimi