Condividi tramite


Operatore << (Visual Basic)

Esegue uno scorrimento a sinistra aritmetico in un modello di bit.

Sintassi

result = pattern << amount  

Parti

result
Obbligatorio. Valore numerico integrale. Risultato dello spostamento del modello di bit. Il tipo di dati è uguale a quello di pattern.

pattern
Obbligatorio. Espressione numerica integrale. Modello di bit da spostare. Il tipo di dati deve essere un tipo integrale (SByte, Byte, Short, UShort, Integer, UInteger, Long o ULong).

amount
Obbligatorio. Espressione numerica. Numero di bit per spostare il modello di bit. Il tipo di dati deve essere Integer o esteso a Integer.

Osservazioni:

I turni aritmetici non sono circolari, il che significa che i bit spostati da un'estremità del risultato non vengono reintrodotti all'altra estremità. In uno spostamento aritmetico a sinistra, i bit spostati oltre l'intervallo del tipo di dati dei risultati vengono eliminati e le posizioni dei bit liberate a destra sono impostate su zero.

Per evitare lo spostamento di più bit rispetto al risultato, Visual Basic maschera il valore di amount con una maschera di dimensioni corrispondente al tipo di dati di pattern. L'AND binario di questi valori viene utilizzato per la quantità di spostamento. Le maschere delle dimensioni sono le seguenti:

Tipo di dati di pattern Maschera di dimensioni (decimale) Maschera di dimensioni (esadecimale)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Se amount è zero, il valore di result è identico al valore di pattern. Se amount è negativo, viene preso come valore senza segno e mascherato con la maschera di dimensione appropriata.

I turni aritmetici non generano mai eccezioni di overflow.

Nota

L'operatore << può essere sottoposto a overload, il che significa che una classe o una struttura può ridefinirne il comportamento quando un operando ha il tipo di tale classe o struttura. Se il codice usa questo operatore in una classe o una struttura di questo tipo, assicurarsi di comprenderne il comportamento ridefinito. Per altre informazioni, vedere Operator Procedures.

Esempio

Nell'esempio seguente viene utilizzato l'operatore << per eseguire spostamenti aritmetici a sinistra sui valori integrali. Il risultato ha sempre lo stesso tipo di dati di quello dell'espressione spostata.

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

I risultati dell'esempio precedente sono i seguenti:

  • result1 è 192 (0000 0000 1100 0000).

  • result2 è 3072 (0000 1100 0000 0000).

  • result3 è -32768 (1000 0000 0000 0000).

  • result4 è 384 (0000 0001 1000 0000).

  • result5 è 0 (spostato 15 posizioni a sinistra).

L'importo dello spostamento per result4 viene calcolato come 17 AND 15, che è uguale a 1.

Vedi anche