Delen via


>> Operator (Visual Basic)

Hiermee wordt een rekenkundige verschuiving naar rechts uitgevoerd 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, UIntegerof LongULong).

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 rechter shift worden de bits die buiten de meest rechtse bitpositie liggen, verwijderd en wordt de meest linkse bit (teken) doorgegeven aan de bitposities aan de linkerkant. Dit betekent dat als pattern deze een negatieve waarde heeft, de onbezette posities zijn ingesteld op één, anders worden ze ingesteld op nul.

Houd er rekening mee dat de gegevenstypen Byte, UShorten UIntegerniet-ondertekend ULong zijn, dus er is geen tekenbit die moet worden doorgegeven. Als pattern een niet-ondertekend type is, worden de onbezette posities altijd ingesteld op nul.

Om te voorkomen dat er meer bits worden verplaatst 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.

Overbelasting

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 het opnieuw gedefinieerde gedrag ervan begrijpen. Zie Operator Procedures voor meer informatie.

Opmerking

In het volgende voorbeeld wordt de >> operator gebruikt om rekenkundige verschuivingen naar rechts uit te voeren op integrale waarden. Het resultaat heeft altijd hetzelfde gegevenstype als dat van de expressie die wordt verschoven.

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

De resultaten van het voorgaande voorbeeld zijn als volgt:

  • result1 is 2560 (0000 1010 0000 0000).

  • result2 is 160 (0000 0000 1010 0000).

  • result3 is 2 (0000 0000 0000 00010).

  • result4 is 640 (0000 0010 1000 0000).

  • result5 is 0 (verschoven 15 plaatsen naar rechts).

Het verschuivingsbedrag result4 wordt berekend als 18 EN 15, die gelijk is aan 2.

In het volgende voorbeeld ziet u rekenkundige verschuivingen op een negatieve waarde.

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

De resultaten van het voorgaande voorbeeld zijn als volgt:

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

  • negresult2 is -1 (de teken-bit wordt doorgegeven).

Zie ook