Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt eine arithmetische rechte Schicht auf einem Bitmuster aus.
Syntax
result = pattern >> amount
Bestandteile
result
Erforderlich. Integraler numerischer Wert. Das Ergebnis der Verschiebung des Bitmusters. Der Datentyp ist identisch mit dem des Datentyps .pattern
pattern
Erforderlich. Integraler numerischer Ausdruck. Das zu verschiebende Bitmuster. Der Datentyp muss ein integraler Typ sein (SByte, , Byte, Short, UShort, UIntegerInteger, , oder ULongLong).
amount
Erforderlich. Numerischer Ausdruck. Die Anzahl der Bits, um das Bitmuster zu verschieben. Der Datentyp muss auf IntegerInteger.
Bemerkungen
Arithmetische Verschiebungen sind nicht kreisförmig, was bedeutet, dass die Bits, die von einem Ende des Ergebnisses entfernt werden, nicht am anderen Ende wieder angefügt 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 es sich um einen nicht signierten Typ handelt, 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 entspricht pattern. Die binäre AND dieser Werte wird für den Schichtbetrag verwendet. Die Größenmasken sind wie folgt:
Datentyp von pattern |
Größenmaske (Dezimalformat) | 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 des result Werts identisch mit dem Wert von pattern. Ist amount dies negativ, wird sie als nicht signierter Wert verwendet und mit der entsprechenden Größenmaske maskiert.
Arithmetische Verschiebungen lösen niemals Überlauf-Ausnahmen aus.
Überladen
Der >> Operator kann überladen werden, was 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 Operatorprozeduren.
Beispiel
Im folgenden Beispiel wird der >> Operator verwendet, um arithmetische rechte Schichten für integrale Werte auszuführen. Das Ergebnis hat immer denselben Datentyp wie der des Ausdrucks, der verschoben wird.
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:
result1ist 2560 (0000 1010 0000 0000).result2ist 160 (0000 0000 1010 0000).result3ist 2 (0000 0000 0000 000 0010).result4ist 640 (0000 0010 1000 0000).result5ist 0 (um 15 Stellen nach rechts verschoben).
Der Schichtbetrag 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:
negresult1ist -512 (1111 1110 0000 0000).negresult2ist -1 (das Zeichenbit wird weitergegeben).