<< 運算子 (Visual Basic)
在位元模式上執行算術左移位。
語法
result = pattern << amount
組件
result
必要。 整數數值。 移位位元模式的結果。 資料類型與 pattern
的資料類型相同。
pattern
必要。 整數數值運算式。 要移位的位元模式。 資料類型必須是整數型別 (SByte
、Byte
、Short
、UShort
、Integer
、UInteger
、Long
或 ULong
)。
amount
必要。 數值運算式。 要移位位元模式的位元數。 資料類型必須 Integer
或擴大為 Integer
。
備註
算術移位不是循環移位,這表示從結果的一端移出的位元不會在另一端重新引入。 在算術左移位中,會捨棄移位超出結果資料類型範圍的位元,而且會將右邊清空的位元位置設定為零。
為了防止移位超過結果所能保留的位元,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
為負數,則會將其視為未帶正負號的值,並以適當的大小遮罩進行遮罩處理。
算術移位永遠不會產生溢位例外狀況。
注意
<<
運算子可以「多載」,這表示當運算元具有某個類別或結構的類型時,該類別或結構可以重新定義其行為。 如果您的程式碼在這類類別或結構上使用此運算子,請務必了解其重新定義的行為。 如需詳細資訊,請參閱 Operator Procedures。
範例
下列範例使用 <<
運算子,對整數值執行算術左移位。 結果一律具有與所移位之運算式相同的資料類型。
Dim pattern As Short = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1
上一個範例的結果如下所示:
result1
為 192 (0000 0000 1100 0000)。result2
為 3072 (0000 1100 0000 0000)。result3
為 -32768 (1000 0000 0000 0000)。result4
為 384 (0000 0001 1000 0000)。result5
為 0 (向左移位 15 位數)。
result4
的移位量會計算為 17 AND 15,等於 1。