共用方式為


>> 運算子 (Visual Basic)

更新:2007 年 11 月

執行位元模式的算術右移位。

 result = pattern >> amount

參數

  • result
    必要項。整數值。位元模式移位的結果。資料型別與 pattern 型別相同。

  • pattern
    必要項。整數值運算式。要移位的位元模式。資料型別必須是整數型別 (SByte、Byte、Short、UShort、Integer、UInteger、Long 或 ULong)。

  • amount
    必要項。數值運算式。位元模式移位的位元數。資料型別必須是 Integer 或擴展至 Integer。

備註

算術移位 (Arithmetic Shift) 不是循環型,這表示位元從結果某端移出後,不會從另一端再次進入。在算術右移位中,移位超過最右邊的位元位置的位元會予以捨棄,並且最左邊有正負號的位元會傳至左邊空出的位元位置。這表示若 pattern 有負數值,則空出的位置會設成一,否則會設成零。

請注意,資料型別 Byte、UShort、UInteger 和 ULong 不帶正負號,所以不會傳送正負號位元。若 pattern 屬於不帶正負號的型別,則空出的位置一律會設成零。

為防止位元移位超過結果能接受的程度,Visual Basic 會以符合 pattern 資料型別的大小遮罩 (Mask) 來標記 amount 值。這些值的二進位 AND 是用作位移的量。大小遮罩如下:

pattern 的資料型別。

大小遮罩 (十進位)

大小遮罩 (十六進位)

SByte, Byte

7

&H00000007

Short, UShort

15

&H0000000F

Integer, UInteger

31

&H0000001F

Long, ULong

63

&H0000003F

如果 amount 是零,則 result 的值等於 pattern 的值。若 amount 是負數,則會視為不帶正負號的值,並會加上適當的大小遮罩。

算術移位不會產生溢位例外狀況。

多載化

>> 運算子可以「多載」,也就是,當運算元具備類別或結構的類型時,該類別或結構就可以重新定義其行為。如果您的程式碼在這種類別或結構上使用此運算子,就一定要先瞭解其重新定義的行為。如需詳細資訊,請參閱運算子程序

範例

下列範例會使用 >> 運算子,來執行整數值的算術左移位。結果會有與已移位運算式相同的資料型別。

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

前一個範例的結果如下:

  • result1 是 2560 (0000 1010 0000 0000)。

  • result2 是 160 (0000 0000 1010 0000)。

  • result3 是 2 (0000 0000 0000 0010)。

  • result4 是 640 (0000 0010 1000 0000)。

  • result5 是 0 (已向右移 15 個位置)。

result4 位移量會以 18 AND 15 計算,即等於 2。

下列範例會顯示負值上的算術移位。

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

前一個範例的結果如下:

  • negresult1 是 -512 (1111 1110 0000 0000)。

  • negresult2 是 -1 (會傳送正負號位元)。

請參閱

概念

Visual Basic 的算術運算子

參考

位元移位運算子

設定運算子

>>= 運算子 (Visual Basic)

Visual Basic 中的運算子優先順序

運算子 (依功能排列)