Megosztás a következőn keresztül:


>> Operátor (Visual Basic)

Aritmetikai jobb műszakot hajt végre egy bitmintán.

Syntax

result = pattern >> amount  

Részek

result
Szükséges. Integrál numerikus érték. A bitminta eltolásának eredménye. Az adattípus megegyezik patterna .

pattern
Szükséges. Integrál numerikus kifejezés. Az eltolandó bitminta. Az adattípusnak integráltípusnak (SByte, , Byte, Short, UShortInteger, UInteger, , Longvagy ULong) kell lennie.

amount
Szükséges. Numerikus kifejezés. A bitminta eltolásához tartozó bitek száma. Az adattípusnak a következőre kell lennie Integer vagy ki kell szélesíteni.Integer

Megjegyzések

Az aritmetikai eltolások nem körkörösek, ami azt jelenti, hogy az eredmény egyik végéről eltolt bitek nem lesznek újra bevezetve a másik végén. A jobb oldali aritmetikai eltolás esetén a jobb szélső bit pozícióján túlra tolódott bitek elvesznek, a bal szélső (jel) bit pedig a bal oldalon üres bitpozíciókba lesz propagálva. Ez azt jelenti, hogy ha pattern negatív érték van, az üres pozíciók értéke egy, ellenkező esetben nulla.

Vegye figyelembe, hogy az adattípusok Byte, UShort, UIntegerés ULong nincsenek aláírva, ezért nincs propagálási jelbit. Ha pattern bármilyen aláíratlan típusú, az üres pozíciók mindig nullára vannak állítva.

Annak érdekében, hogy az eredménynél több bittel ne lehessen eltolást tartani, a Visual Basic az adattípusnak patternmegfelelő méretmaszkkal maszkolja az értéketamount. A bináris ÉS értékeket a rendszer az eltolás összegéhez használja. A maszkok mérete a következő:

Adattípus: pattern Maszk mérete (decimális) Méretmaszk (hexadecimális)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Ha amount nulla, akkor az érték result megegyezik a pattern. Ha amount negatív, akkor a rendszer aláíratlan értékként veszi fel, és a megfelelő méretű maszkkal maszkolja.

Az aritmetikai műszakok soha nem hoznak létre túlcsordulási kivételeket.

Túlterhelés

Az >> operátor túlterhelhető, ami azt jelenti, hogy egy osztály vagy struktúra újradefiniálta a viselkedését, ha egy operandus az adott osztály vagy struktúra típusával rendelkezik. Ha a kód egy ilyen osztályon vagy struktúrán használja ezt az operátort, győződjön meg arról, hogy tisztában van az újradefiniált viselkedésével. További információ: Operátori eljárások.

Példa

Az alábbi példa az operátort használja az >> integrál értékek számtani jobb eltolódásainak végrehajtására. Az eredmény mindig ugyanazzal az adattípussal rendelkezik, mint az eltolás alatt álló kifejezés.

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

Az előző példa eredményei a következők:

  • result1 2560 (0000 1010 0000 0000).

  • result2 160 (0000 0000 1010 0000).

  • result3 2 (0000 0000 0000 0000 0010).

  • result4 640 (0000 0010 1000 0000).

  • result5 0 (15 helyet jobbra tol).

A műszak összege result4 18 ÉS 15, ami 2.

Az alábbi példa egy negatív érték számtani eltolódásait mutatja be.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Az előző példa eredményei a következők:

  • negresult1 -512 (1111 1110 0000 0000).

  • negresult2 -1 (a jelbit propagálása).

Lásd még