VB中"<<"运算符的解答

casualplayer 2008-03-26 02:47:22
关于"<<"运算符,我在MSDN中找到了答案,不敢独享,整理后贴出来和大家一起学习


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

result = pattern << amount

result 必选。整型数值。对该位模式进行移位的结果。数据类型与 pattern 的数据类型相同。

pattern 必选。整型数值表达式。要进行移位的位模式。数据类型必须为整型(SByte、Byte、Short、UShort、Integer、UInteger、Long 或 ULong)。

amount 必选。数值表达式。要将该位模式移位的位数。数据类型必须为 Integer 或扩展到 Integer。


*备注*

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

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

pattern 的数据类型。 大小掩码(十进制)
SByte, Byte 7
Short, UShort 15
Integer, UInteger 31
Long, ULong 63

如果 amount 为零,则 result 的值与 pattern 的值相同。如果 amount 为负值,则将把它作为无符号的值,并使用相应的大小掩码进行屏蔽。
数学移位绝不会产生溢出异常。

-------------------------------------------------------------------------------
示例一:

Dim pattern As Short = 192 '192的16位二进制为 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

由于这里pattern的数据类型为Short,所以:

result1 的移位量以 0 AND 15 计算,结果等于 192 (0000 0000 1100 0000)。
result2 的移位量以 4 AND 15 计算,结果等于 3072 (0000 1100 0000 0000)。
result3 的移位量以 9 AND 15 计算,结果等于 -32768 (1000 0000 0000 0000)。
result4 的移位量以 17 AND 15 计算,结果等于 384 (0000 0001 1000 0000)。
result5 的移位量以 -1 AND 15 计算,结果等于 0(向左移动 15 位)(移出范围)。

-------------------------------------------------------------------------------
示例二:

Dim pattern As Byte = 92 '92的8位二进制为 0101 1100.
Dim result1, result2, result3, result4, result5 As Byte
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 10
result5 = pattern << -1

由于这里pattern的数据类型为Byte,所以:

result1 的移位量以 0 AND 7 计算,结果等于 92 (0101 1100)。
result2 的移位量以 4 AND 7 计算,结果等于 192 (1100 0000)。
result3 的移位量以 9 AND 7 计算,结果等于 184 (1011 1000)。
result4 的移位量以 10 AND 7 计算,结果等于 112 (0111 0000)。
result5 的移位量以 -1 AND 7 计算,结果等于 0(0000 0000)(移出范围)。

-------------------------------------------------------------------------------
附:

AND运算方法:

示例:
整数10的8位二进制是 0000 1010
整数7的8位二进制是 0000 0111

那么 4 AND 7 的结果就是(取二进制的交集) 0000 0010
转成十进制就为2
...全文
262 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
barenx 2008-03-29
  • 打赏
  • 举报
回复
.net 的 和VB不通用 根本不是一个东东
qiu5208 2008-03-27
  • 打赏
  • 举报
回复
这是vb。net的内容。
DoemingRau 2008-03-27
  • 打赏
  • 举报
回复
VB中没有按位操作的运算符
Sandrer 2008-03-27
  • 打赏
  • 举报
回复
你查询的应该不是VB的MSDN吧??
VB中不存在以下类型:SByte、Short、UShort、UInteger、ULong
舉杯邀明月 2008-03-27
  • 打赏
  • 举报
回复
没听说过VB中有移位运算.

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧