在位模式上執行算術右移。
語法
result = pattern >> amount
組件
result
必須的。 整數數值。 移動位模式的結果。 數據類型與 pattern的數據類型相同。
pattern
必須的。 整數數值表達式。 要移位的位模式。 數據類型必須是整數型別(SByte、、、ByteShort、UShort、、UIntegerInteger、 Long或 ULong)。
amount
必須的。 數值表達式。 要轉移位模式的位數。 資料類型必須 Integer 或擴大為 Integer。
備註
算術移位不是循環移位,這表示從結果的一端移出的位元不會在另一端重新引入。 在算術右移中,會捨棄超出最右邊位位置的位,並將最左邊的位(符號)位傳播到左邊空出的位位置。 這表示如果 pattern 具有負值,空置的位置會設定為一個,否則會設定為零。
請注意,數據類型 Byte、 UShort、 UInteger和 ULong 都是未簽署的,因此沒有要傳播的符號位。 如果 pattern 為任何未帶正負號的類型,空置的位置一律會設定為零。
若要避免將位移移超過結果所能保留的位,Visual Basic 會以對應至 數據類型pattern的大小遮罩來遮罩的值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 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 (符號位已傳播)。