Freigeben über


>> Operator (Visual Basic)

Führt eine arithmetische Rechtsverschiebung in einem Bitmuster aus.

Syntax

result = pattern >> amount  

Bestandteile

result
Erforderlich. Integraler numerischer Wert. Das Ergebnis der Verschiebung des Bitmusters. Der Datentyp entspricht dem von pattern.

pattern
Erforderlich. Ein ganzzahliger numerischer Ausdruck. Das zu verschiebende Bitmuster. Der Datentyp muss ein ganzzahliger Typ (SByte, Byte, Short, UShort, Integer, UInteger, Long oder ULong) sein.

amount
Erforderlich. Ein numerischer Ausdruck. Die Anzahl der Bits, um die das Bitmuster verschoben werden soll. Der Datentyp muss Integer sein oder zu Integer erweitert werden.

Bemerkungen

Arithmetische Verschiebungen sind nicht kreisförmig, was bedeutet, dass die Bits, die von einem Ende des Ergebnisses verschoben werden, am anderen Ende nicht wieder eingeführt werden. Bei einer arithmetischen rechten Schicht werden die Bits, die über die äußerst rechte Bitposition verschoben wurden, verworfen, und das äußerst linke (Vorzeichen) Bit wird an die Bitpositionen verteilt, die links geräumt sind. Dies bedeutet, dass pattern bei negativem Wert die leer gestellten Positionen auf eins festgelegt sind, andernfalls werden sie auf Null festgelegt.

Beachten Sie, dass die Datentypen Byte, UShort, UInteger und ULong nicht signiert sind, sodass kein Zeichenbit für die Verteilung vorhanden ist. Wenn pattern ein nicht signierter Typ ist, werden die leer gestellten Positionen immer auf Null festgelegt.

Um die Verschiebung um mehr Bits zu verhindern, als das Ergebnis enthalten kann, maskiert Visual Basic den Wert amount mit einer Größenmaske, die dem Datentyp pattern entspricht. Das binäre UND dieser Werte wird für den Verschiebungswert verwendet. Für die Größenmasken gilt Folgendes:

Datentyp von pattern Größenmaske (dezimal) Größenmaske (hexadezimal)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Wenn amount null ist, ist der Wert von result identisch mit dem Wert von pattern. Wenn amount negativ ist, wird dieses Element als Wert ohne Vorzeichen verwendet und mit der entsprechenden Größenmaske maskiert.

Arithmetische Verschiebungen erzeugen nie Überlaufausnahmen.

Überladen

Der >>-Operator kann überladen werden. Dies bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Wenn Ihr Code diesen Operator für eine solche Klasse oder Struktur verwendet, stellen Sie sicher, dass Sie das neu definierte Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.

Beispiel

Im folgenden Beispiel wird der >>-Operator verwendet, um arithmetische rechte Schichten für integrale Werte auszuführen. Das Ergebnis weist immer denselben Datentyp wie der des zu verschiebenden Ausdrucks auf.

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

Die Ergebnisse des vorherigen Beispiels sind wie folgt:

  • result1 ist 2560 (0000 1010 0000 0000).

  • result2 ist 160 (0000 0000 1010 0000).

  • result3 ist 2 (0000 0000 0000 0010).

  • result4 ist 640 (0000 0010 1000 0000).

  • result5 ist 0 (15 Stellen nach rechts verschoben).

Der Schichtbetrag für result4 wird als 18 UND 15 berechnet, was 2 entspricht.

Das folgende Beispiel zeigt arithmetische Schichten auf einem negativen Wert.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Die Ergebnisse des vorherigen Beispiels sind wie folgt:

  • negresult1 ist -512 (1111 1110 0000 0000).

  • negresult2 ist -1 (Das Vorzeichenbit wird weitergegeben).

Siehe auch