<< Operator (Visual Basic)
Utför ett aritmetiskt vänsterskift på ett bitmönster.
Syntax
result = pattern << amount
Delar
result
Obligatoriska. Integral numeriskt värde. Resultatet av att flytta bitmönstret. Datatypen är samma som pattern
för .
pattern
Obligatoriska. Integral numeriskt uttryck. Bitmönstret som ska flyttas. Datatypen måste vara en integrerad typ (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
eller ULong
).
amount
Obligatoriska. Numeriskt uttryck. Antalet bitar för att ändra bitmönstret. Datatypen måste vara Integer
eller utvidgas till Integer
.
Kommentarer
Aritmetiska skift är inte cirkulära, vilket innebär att de bitar som flyttas från ena änden av resultatet inte återinförs i den andra änden. I ett aritmetiskt vänsterskift ignoreras de bitar som flyttas utanför intervallet för resultatdatatypen och bitpositionerna som töms till höger är inställda på noll.
För att förhindra ett skift med fler bitar än vad resultatet kan innehålla maskerar Visual Basic värdet amount
för med en storleksmask som motsvarar datatypen pattern
för . Binärt OCH för dessa värden används för skiftmängden. Storleksmaskerna är följande:
Datatyp för pattern |
Storleksmask (decimal) | Storleksmask (hexadecimal) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
Om amount
är noll är värdet för result
identiskt med värdet pattern
för . Om amount
är negativt tas det som ett osignerat värde och maskeras med lämplig storleksmask.
Aritmetiska skift genererar aldrig undantag för spill.
Kommentar
Operatorn <<
kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende när en operande har den typen av klass eller struktur. Om din kod använder den här operatorn i en sådan klass eller struktur bör du se till att du förstår dess omdefinierade beteende. Mer information finns i Operatorprocedurer.
Exempel
I följande exempel används operatorn <<
för att utföra aritmetiska vänsterskift på integralvärden. Resultatet har alltid samma datatyp som för uttrycket som flyttas.
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
Resultatet av föregående exempel är följande:
result1
är 192 (0000 0000 1100 0000).result2
är 3072 (0000 1100 0000 0000).result3
är -32768 (1000 0000 0000 0000).result4
är 384 (0000 0001 1000 0000).result5
är 0 (skiftade 15 platser till vänster).
Skiftbeloppet för result4
beräknas som 17 AND 15, vilket är lika med 1.