<< Operator (Visual Basic)
Hiermee voert u een rekenkundige linker shift uit op een bitpatroon.
Syntaxis
result = pattern << amount
generator
result
Vereist. Integrale numerieke waarde. Het resultaat van het verschuiven van het bitpatroon. Het gegevenstype is hetzelfde als dat van pattern
.
pattern
Vereist. Integrale numerieke expressie. Het bitpatroon dat moet worden verschoven. Het gegevenstype moet een integraal type zijn (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
of Long
ULong
).
amount
Vereist. Numerieke expressie. Het aantal bits dat het bitpatroon moet worden verplaatst. Het gegevenstype moet worden Integer
uitgebreid of uitgebreid tot Integer
.
Opmerkingen
Rekenkundige verschuivingen zijn niet cirkelvormig, wat betekent dat de bits die van het ene uiteinde van het resultaat zijn verschoven, niet opnieuw worden geïntroduceerd aan het andere uiteinde. In een rekenkundige linkerdienst worden de bits die buiten het bereik van het resultaatgegevenstype zijn verschoven, verwijderd en worden de bitposities aan de rechterkant ingesteld op nul.
Om een verschuiving met meer bits te voorkomen dan het resultaat kan bevatten, maskert Visual Basic de waarde van amount
met een groottemasker dat overeenkomt met het gegevenstype van pattern
. Het binaire EN van deze waarden wordt gebruikt voor de verschuivingshoeveelheid. De groottemaskers zijn als volgt:
Gegevenstype van pattern |
Groottemasker (decimaal) | Groottemasker (hexadecimaal) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
Als amount
nul is, is de waarde result
gelijk aan de waarde van pattern
. Als amount
dit negatief is, wordt deze als een niet-ondertekende waarde genomen en gemaskeerd met het juiste groottemasker.
Rekenkundige verschuivingen genereren nooit overloop-uitzonderingen.
Notitie
De <<
operator kan overbelast worden, wat betekent dat een klasse of structuur het gedrag ervan opnieuw kan definiëren wanneer een operand het type van die klasse of structuur heeft. Als uw code deze operator gebruikt voor een dergelijke klasse of structuur, moet u ervoor zorgen dat u begrijpt wat het opnieuw gedefinieerde gedrag is. Zie Operator Procedures voor meer informatie.
Opmerking
In het volgende voorbeeld wordt de <<
operator gebruikt om rekenkundige linkse verschuivingen uit te voeren op integrale waarden. Het resultaat heeft altijd hetzelfde gegevenstype als dat van de expressie die wordt verschoven.
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
De resultaten van het vorige voorbeeld zijn als volgt:
result1
is 192 (0000 0000 1100 0000).result2
is 3072 (0000 1100 0000 0000).result3
is -32768 (1000 0000 0000 0000 0000).result4
is 384 (0000 0001 1000 0000).result5
is 0 (verschoven 15 plaatsen naar links).
Het verschuivingsbedrag result4
wordt berekend als 17 EN 15, die gelijk is aan 1.