>> 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 pattern
a .
pattern
Szükséges. Integrál numerikus kifejezés. Az eltolandó bitminta. Az adattípusnak integráltípusnak (SByte
, , Byte
, Short
, UShort
Integer
, UInteger
, , Long
vagy 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 pattern
megfelelő 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).