<< Operator (Visual Basic)

Wykonuje arytmetyczną zmianę lewej na wzorcu bitowym.

Składnia

result = pattern << amount  

generatora

result
Wymagany. Wartość liczbowa całkowita. Wynik przesunięcia wzorca bitowego. Typ danych jest taki sam jak typ pattern.

pattern
Wymagany. Wyrażenie liczbowe całkowite. Wzorzec bitowy, który ma zostać przesunięty. Typ danych musi być typem całkowitym (SByte, Byte, , UShortShort, Integer, UInteger, lub LongULong).

amount
Wymagany. Wyrażenie liczbowe. Liczba bitów do przesunięcia wzorca bitów. Typ danych musi być Integer lub poszerzyć wartość .Integer

Uwagi

Przesunięcia arytmetyczne nie są cykliczne, co oznacza, że bity przesunięte z jednego końca wyniku nie są przywracane na drugim końcu. W arytmetycznym przesunięciu w lewo bity przesunięte poza zakres typu danych wynikowych są odrzucane, a pozycje bitów opuszczone po prawej stronie są ustawione na zero.

Aby zapobiec przesunięciu o więcej bitów niż wynik może być przechowywany, program Visual Basic maskuje wartość amount z maską rozmiaru odpowiadającą typowi patterndanych . Dane binarne AND z tych wartości są używane dla wartości przesunięcia. Maski rozmiaru są następujące:

Typ danych pattern Maska rozmiaru (dziesiętna) Maska rozmiaru (szesnastkowa)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Jeśli amount wartość jest równa zero, wartość result jest identyczna z wartością pattern. Jeśli amount jest ujemna, jest traktowana jako niepodpisane wartość i maskowana przy użyciu odpowiedniej maski rozmiaru.

Zmiany arytmetyczne nigdy nie generują wyjątków przepełnienia.

Uwaga

Operator << może być przeciążony, co oznacza, że klasa lub struktura może ponownie zdefiniować jego zachowanie, gdy operand ma typ tej klasy lub struktury. Jeśli kod używa tego operatora w takiej klasie lub strukturze, upewnij się, że rozumiesz jego ponowne zdefiniowanie zachowania. Aby uzyskać więcej informacji, zobacz Procedury operatorów.

Przykład

W poniższym przykładzie użyto << operatora do wykonywania arytmetycznych przesunięć w lewo na wartości całkowitych. Wynik zawsze ma ten sam typ danych co wyrażenie, które jest przesunięte.

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

Wyniki poprzedniego przykładu są następujące:

  • result1 jest 192 (0000 0000 1100 0000).

  • result2 is 3072 (0000 1100 0000 0000).

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

  • result4 is 384 (0000 0001 1000 0000).

  • result5 jest 0 (przesunięte 15 miejsc po lewej stronie).

Wartość przesunięcia dla result4 parametru jest obliczana jako 17 I 15, która jest równa 1.

Zobacz też