Aracılığıyla paylaş


>> İş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, UIntegerveya LongULong) olmalıdır. UShortShortByteSByte

amount
Gerekli. Sayısal ifade. Bit desenini kaydıracak bit sayısı. Veri türü olmalıdır Integer veya olarak Integergeniş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.

, , UShortUIntegerve ULong veri türlerinin Byteiş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 patternkarşı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).

Ayrıca bkz.