共用方式為


>> 運算子 (Visual Basic)

在位模式上執行算術右移。

語法

result = pattern >> amount  

組件

result
必須的。 整數數值。 移動位模式的結果。 數據類型與 pattern的數據類型相同。

pattern
必須的。 整數數值表達式。 要移位的位模式。 數據類型必須是整數型別(SByte、、、ByteShortUShort、、UIntegerIntegerLongULong)。

amount
必須的。 數值表達式。 要轉移位模式的位數。 資料類型必須 Integer 或擴大為 Integer

備註

算術移位不是循環移位,這表示從結果的一端移出的位元不會在另一端重新引入。 在算術右移中,會捨棄超出最右邊位位置的位,並將最左邊的位(符號)位傳播到左邊空出的位位置。 這表示如果 pattern 具有負值,空置的位置會設定為一個,否則會設定為零。

請注意,數據類型 ByteUShortUIntegerULong 都是未簽署的,因此沒有要傳播的符號位。 如果 pattern 為任何未帶正負號的類型,空置的位置一律會設定為零。

若要避免將位移移超過結果所能保留的位,Visual Basic 會以對應至 數據類型pattern的大小遮罩來遮罩的值amount。 這些值的二進位 AND 用於班次數量。 大小遮罩如下所示:

的數據類型 pattern 大小遮罩 (十進位) 大小遮罩 (十六進位)
SByteByte 7 &H00000007
ShortUShort 15 &H0000000F
IntegerUInteger 31 &H0000001F
LongULong 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 00000)。

  • 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 110 0000 00000)。

  • negresult2 為 -1 (符號位已傳播)。

另請參閱