>> – operátor (Visual Basic)
Provede aritmetický pravý posun v bitovém vzoru.
Syntaxe
result = pattern >> amount
Součástky
result
Povinný: Celočíselná číselná hodnota. Výsledek posunu bitového vzoru. Datový typ je stejný jako datový pattern
typ .
pattern
Povinný: Celočíselný číselný výraz. Bitový vzor, který se má posunout. Datový typ musí být celočíselný typ (SByte
, Byte
, UShort
Short
, Integer
, UInteger
, , , Long
nebo ULong
).
amount
Povinný: Číselný výraz. Početbitch Datový typ musí být Integer
nebo rozšířen na Integer
.
Poznámky
Aritmetické posuny nejsou kruhové, což znamená, že bity posunuté z jednoho konce výsledku se na druhém konci znovu nevyvolají. V aritmetické pravé posunu se bity posunuté nad pozici bitu úplně vpravo zahodí a bit úplně vlevo (znaménko) se rozšíří do pozic bitů vysazených vlevo. To znamená, že pokud pattern
má zápornou hodnotu, jsou uvolněné pozice nastaveny na jednu, jinak jsou nastaveny na nulu.
Všimněte si, že datové typy Byte
, , UShort
UInteger
a ULong
jsou bez znaménka, takže neexistuje žádný bit znaménka k šíření. Pokud pattern
je některý typ bez znaménka, uvolněné pozice jsou vždy nastaveny na nulu.
Aby se zabránilo posunu o více bitů, než může výsledek obsahovat, jazyk Visual Basic maskuje hodnotu amount
maskou velikosti odpovídající datovému pattern
typu . Binární hodnota AND těchto hodnot se používá pro velikost směny. Masky velikosti jsou následující:
Datový typ pattern |
Maska velikosti (desítková) | Maska velikosti (šestnáctková) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
Pokud amount
je nula, je hodnota result
identická s hodnotou pattern
. Pokud amount
je záporná, považuje se za nepodepsanou hodnotu a maskuje se odpovídající maskou velikosti.
Aritmetické směny nikdy negenerují výjimky přetečení.
Přetížení
Operátor >>
může být přetížen, což znamená, že třída nebo struktura mohou předefinovat jeho chování, pokud operand má typ této třídy nebo struktury. Pokud váš kód používá tento operátor pro takovou třídu nebo strukturu, ujistěte se, že rozumíte jeho předdefinované chování. Další informace naleznete v tématu Procedury operátoru.
Příklad
Následující příklad používá >>
operátor k provádění aritmetických pravých posunů na celočíselné hodnoty. Výsledek má vždy stejný datový typ jako posun výraz.
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
Výsledky předchozího příkladu jsou následující:
result1
je 2560 (0000 1010 0000 0000).result2
je 160 (0000 0000 1010 0000).result3
je 2 (0000 0000 0000 0010).result4
je 640 (0000 0010 1000 0000).result5
je 0 (posunuto 15 míst doprava).
Částka směny result4
se vypočítá jako 18 A 15, což se rovná 2.
Následující příklad ukazuje aritmetické posuny na záporné hodnotě.
Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13
Výsledky předchozího příkladu jsou následující:
negresult1
je -512 (1111 1110 0000 0000).negresult2
je -1 (bit znaménka se rozšíří).