<< Operator (Visual Basic)
Führt eine arithmetische Linksverschiebung für ein 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 von einem Ende des Ergebnisses verschobenen Bits am anderen Ende nicht wieder eingeführt werden. Bei einer arithmetischen Linken-Verschiebung werden die Bits, die über den Bereich des Ergebnisdatentyps verschoben werden, verworfen, und die auf der rechten Seite geräumten Bitpositionen werden auf 0 festgelegt.
Um eine Verschiebung um mehr Bits zu verhindern, als das Ergebnis enthalten kann, maskiert Visual Basic den Wert von amount
mit einer Größenmaske, die dem Datentyp von pattern
entspricht. Das binäre AND dieser Werte wird für den Schichtbetrag verwendet. Die Größenmasken sind wie folgt:
Datentyp von pattern |
Größenmaske (dezimal) | Größenmaske (hexadezimal) |
---|---|---|
SByte , Byte |
7 | &H000000007 |
Short , UShort |
15 | &H00000000F |
Integer , UInteger |
31 | &H00000001F |
Long , ULong |
63 | &H0000003F |
Wenn amount
null ist, ist der Wert von result
identisch mit dem Wert von pattern
. Wenn amount
negativ ist, wird er als wert ohne Vorzeichen verwendet und mit der entsprechenden Größenmaske maskiert.
Arithmetische Schichten erzeugen nie Überlaufausnahmen.
Hinweis
Der <<
Operator kann überladen sein, 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 dessen neu definiertes Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.
Beispiel
Im folgenden Beispiel wird der <<
Operator verwendet, um arithmetische Linksverschiebungen für Integralwerte durchzuführen. Das Ergebnis hat immer denselben Datentyp wie das des zu verschiebenden Ausdrucks.
Dim pattern As Short = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1
Die Ergebnisse des vorherigen Beispiels sind wie folgt:
result1
ist 192 (0000 0000 1100 0000).result2
ist 3072 (0000 1100 0000 0000).result3
ist -32768 (1000 0000 0000 0000).result4
ist 384 (0000 0001 1000 0000).result5
ist 0 (15 Stellen nach links verschoben).
Der Schichtbetrag für result4
wird als 17 UND 15 berechnet, was 1 entspricht.