<< 运算符 (Visual Basic)

对位模式执行算术左移。

语法

result = pattern << amount  

部件

result
必填。 整型数值。 移动位模式的结果。 数据类型与该 pattern数据类型相同。

pattern
必填。 整型数值表达式。 要移动的位模式。 数据类型必须是整型类型(SByte、、ByteShortUShortIntegerUInteger、或LongULong)。

amount
必填。 数值表达式。 要移动位模式的位数。 数据类型必须 Integer 或扩大为 Integer

注解

算术移位不是循环性的,也就是说,从结果一端移出的位不会重新移入到另一端。 在算术左移中,将丢弃超出结果数据类型范围的位,右侧空置的位位置设置为零。

为了防止移位数超过结果可以容纳的位数,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 = 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 00000)。

  • result4 为 384 (0000 0001 1000 0000)。

  • result5 为 0 (向左移动 15 个位置)。

移位量 result4 计算为 17 AND 15,等于 1。

另请参阅