Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee wordt een rekenkundige verschuiving naar rechts uitgevoerd op een bitpatroon.
Syntaxis
result = pattern >> amount
Onderdelen
result
Verplicht. Integrale numerieke waarde. Het resultaat van het verschuiven van het bitpatroon. Het gegevenstype is hetzelfde als dat van pattern.
pattern
Verplicht. Integrale numerieke expressie. Het bitpatroon dat moet worden verschoven. Het gegevenstype moet een integraal type zijn (SByte, Byte, Short, UShort, Integer, UIntegerof LongULong).
amount
Verplicht. 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.
Voorbeeld
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:
result1is 2560 (0000 1010 0000 0000).result2is 160 (0000 0000 1010 0000).result3is 2 (0000 0000 0000 00010).result4is 640 (0000 0010 1000 0000).result5is 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:
negresult1is -512 (1111 1110 0000 0000).negresult2is -1 (de teken-bit wordt doorgegeven).