>> Operator (Visual Basic)
Wykonuje wzorzec bitowy arytmetyczne, prawy shift.
result = pattern >> amount
Części
result
Wymagane.Integralną wartość liczbową.Wynik przesuwanie wzorzec bitowy.Typ danych jest taka sama, jak w przypadku pattern.pattern
Wymagane.Integralną wyrażenia liczbowego.Wzorzec bitowy, tak aby pasowała.The data type must be an integral type (SByte, Byte, Short, UShort, Integer, UInteger, Long, or ULong).amount
Wymagane.Wyrażenia liczbowego.Liczba bitów przesunięcie wzorca bitów.Typ danych musi być Integer lub rozszerzyć do Integer.
Uwagi
Arytmetyczne przesunięcia nie są cykliczne, co oznacza bitów, poza jednym końcu wynik nie są ponownie wprowadzone na drugim końcu.W arytmetyczną prawy shift usługa bits przesunięte poza pozycji bitu po prawej stronie zostaną odrzucone, a bit skrajnej lewej (znak) są propagowane w pozycjach naboru po lewej stronie.Oznacza to, że jeśli pattern ma wartość ujemną, zostały zasiedlone pozycje są ustawione na jeden; w przeciwnym razie są ustawiane na zero.
Należy zauważyć, że typy danych Byte, UShort, UInteger, i ULong jest niepodpisany, więc nie bitem znaku do propagowania.Jeśli pattern jest niepodpisane dowolnego typu, pozycje zostały zasiedlone są zawsze ustawione na zero.
Aby zapobiec przesuwaniu przez bity więcej niż może pomieścić wynik, Visual Basic maski wartość amount z maską wielkość odpowiadającą typowi danych z pattern.Binarne i z tych wartości jest używany do kwoty shift.Rozmiar maski są w następujący sposób:
Typ danychpattern |
Rozmiar maski (dziesiętny) |
Rozmiar maski (szesnastkowo) |
---|---|---|
SByte, Byte |
7 |
& H00000007 |
Short, UShort |
15 |
& H0000000F |
Integer, UInteger |
31 |
& H0000001F |
Long, ULong |
63 |
& H0000003F |
Jeśli amount jest zero, wartość result jest taka sama, jak wartość pattern.Jeśli amount jest negatywny, jest jako wartość bez znaku i maskowane przez maskę odpowiedni rozmiar.
Arytmetyczne w systemie zmianowym nigdy wygenerować wyjątków przepełnienia.
Przeciążenie
>> Operator może być nadmiernie, co oznacza, że klasy lub struktury można ponownie zdefiniować jego zachowanie podczas operand ma typ tej klasy lub struktury.Jeśli użyty kod używa tego operatora na klasy lub struktury, upewnij się, że rozumiesz działanie przedefiniować.Aby uzyskać więcej informacji, zobacz Operator procedur (Visual Basic).
Przykład
W poniższym przykładzie użyto >> operatora do wykonywania arytmetyczne przesunięcia w prawo na integralną wartości.Wynik ma zawsze dane tego samego typu jak wyrażenie jest przesuwane.
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
Dostępne są następujące wyniki poprzedniego przykładu:
result1jest 2560 (0000 1010 0000 do 0000).
result2-160 (0000 do 0000 1010 0000).
result32 (0000 do 0000 0000 0010).
result4jest 640 (0000 0010 1000 0000).
result5jest równa 0 (przesuniętych 15 miejsc po prawej stronie).
Kwota shift dla result4 jest obliczana jako 18 15 I, jest równa 2.
W poniższym przykładzie arytmetyczne przesunięcia na wartość ujemną.
Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13
Dostępne są następujące wyniki poprzedniego przykładu:
negresult1jest-512 (1111 1110 0000 do 0000).
negresult2jest równy -1 (propagowane bit znaku).
Zobacz też
Informacje
Bitowe operatory Shift (Visual Basic)
Operatory przypisania (Visual Basic)
Pierwszeństwo operatorów w języku Visual Basic
Podmioty wymienione według funkcji (Visual Basic)