<< 运算符

<< 运算符

对位模式执行数学左移位。

result = pattern << amount
各部分说明
result
必选项。整型数值。对该位模式进行移位的结果。数据类型与 pattern 的数据类型相同。
pattern
必选项。整型数值表达式。要进行移位的位模式。数据类型必须为 ByteShortIntegerLong
amount
必选项。数值表达式。要将该位模式移位的位数。数据类型必须为 Integer 或扩展到 Integer
备注

数学移位不是循环的,即不会将在结果的一端移出的数位从另一端重新移入。在数学左移位运算中,丢弃移出结果数据类型范围的数位,而将右端空出的数位位置设置为零。

为防止移位的结果超出它所支持的位数,Visual Basic 使用与 pattern 的数据类型相对应的大小掩码来屏蔽 amount 的值。可使用这些值的二进制与运算结果作为移位量。大小掩码如下所示:

pattern 的数据类型大小掩码(十进制)大小掩码(十六进制)
Byte7&H00000007
Short15&H0000000F
Integer31&H0000001F
Long63&H0000003F

如果 amount 为零,则 result 的值与 pattern 的值相同。如果 amount 为负值,则将把它作为无符号的值,并使用相应的大小掩码进行屏蔽。

数学移位绝不会产生溢出异常。

示例

此示例使用 << 运算符对整数值执行数学左移位。结果的数据类型始终与被移位的表达式相同。

Dim Pattern As Short = 192   ' Bit pattern is 0000 0000 1100 0000.
Dim Result1, Result2, Result3, Result4, Result5 As Short
Result1 = Pattern << 0      ' Result is 192 (0000 0000 1100 0000).
Result2 = Pattern << 4     ' Result is 3072 (0000 1100 0000 0000).
Result3 = Pattern << 9   ' Result is -32768 (1000 0000 0000 0000).
Result4 = Pattern << 17     ' Result is 384 (0000 0001 1000 0000).
Result5 = Pattern << -1   ' Result is 0 (shifted 15 places to left).

Result4 的移位量以 17 AND 15 计算,结果等于 1。

 

注意几点:

1 数据类型,整型Byte Short Integer Long

2 大小掩码,超过的要换算成掩码范围内的进行计算

3 数学移位不是循环的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值