<< 运算符 (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
为 0,则 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。