>> İşleç (Visual Basic)
Bit deseninde aritmetik bir sağ kaydırma gerçekleştirir.
Sözdizimi
result = pattern >> amount
Parça
result
Gerekli. İntegral sayısal değer. Bit deseninin kaydırılması sonucu. Veri türü ile aynıdır pattern
.
pattern
Gerekli. İntegral sayısal ifade. Kaydırılacak bit düzeni. Veri türü bir tamser türü (, , , , , Integer
, UInteger
veya Long
ULong
) olmalıdır. UShort
Short
Byte
SByte
amount
Gerekli. Sayısal ifade. Bit desenini kaydıracak bit sayısı. Veri türü olmalıdır Integer
veya olarak Integer
genişletilmelidir.
Açıklamalar
Aritmetik kaydırmalar dairesel değildir, yani sonucun bir ucundan kaydırılan bitler diğer uçta yeniden giriş yapılmaz. Aritmetik bir sağ kaydırmada, en sağdaki bit konumunun ötesine kaydırılan bitler atılır ve en soldaki (işaret) bit soldaki boş bit konumlarına yayılır. Bu, negatif bir değere sahipse pattern
, boşaltılan konumların bir olarak ayarlandığı, aksi takdirde sıfır olarak ayarlandığı anlamına gelir.
, , UShort
UInteger
ve ULong
veri türlerinin Byte
işaretsiz olduğunu, dolayısıyla yaymak için bir işaret biti olmadığını unutmayın. herhangi bir imzasız türündeyse pattern
, boşaltılan konumlar her zaman sıfır olarak ayarlanır.
Sonucun tutaandan daha fazla bit kaymasını önlemek için, Visual Basic değerini amount
veri türüne pattern
karşılık gelen bir boyut maskesiyle maskeler. Bu değerlerin ikili AND değeri vardiya miktarı için kullanılır. Boyut maskeleri aşağıdaki gibidir:
Veri türü: pattern |
Boyut maskesi (ondalık) | Boyut maskesi (onaltılık) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
sıfır ise amount
değeri result
değeri ile aynıdır pattern
. Negatifse amount
, işaretsiz bir değer olarak alınır ve uygun boyut maskesiyle maskelenmiş olur.
Aritmetik vardiyalar hiçbir zaman taşma özel durumları oluşturmaz.
Aşırı Yükleme
İşleç >>
aşırı yüklenebilir, yani bir işlenen bu sınıf veya yapı türüne sahip olduğunda bir sınıf veya yapı davranışını yeniden tanımlayabilir. Kodunuz bu işleci böyle bir sınıf veya yapıda kullanıyorsa, yeniden tanımlanmış davranışını anladığınızdan emin olun. Daha fazla bilgi için bkz . İşleç Yordamları.
Örnek
Aşağıdaki örnek, tamsayı değerlerinde aritmetik sağ kaydırmalar gerçekleştirmek için işlecini kullanır >>
. Sonuç her zaman kaydırılan ifadeyle aynı veri türüne sahiptir.
Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1
Yukarıdaki örneğin sonuçları aşağıdaki gibidir:
result1
2560 (0000 1010 0000 0000).result2
160 (0000 0000 1010 0000).result3
2 'dir (0000 0000 0000 0000 0010).result4
640 (0000 0010 1000 0000).result5
0'dır (sağa 15 yer kaydırılır).
için vardiya miktarı 2'ye result4
eşit olan 18 VE 15 olarak hesaplanır.
Aşağıdaki örnekte, negatif bir değer üzerinde aritmetik kaydırmalar gösterilmektedir.
Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13
Yukarıdaki örneğin sonuçları aşağıdaki gibidir:
negresult1
is -512 (1111 1110 0000 0000).negresult2
-1 (işaret biti yayılır).