vb点虐 位移运算符 vbs 位运算

VB.NET怎么位运算?

注意只能对整型执行按位运算。浮点值必须转换为整型后,才能执行按位运算。按位运算采用二进制(以 2 为基)形式计算两个整数值。它们比较对应位置上的位,然后基于比较的结果赋值。下面的示例演示了 And 运算符。复制Dim x As Integerx = 3 And 5 前面的示例将 x 的值设置为 1。发生这种情况的原因如下:这些值以二进制形式处理:二进制格式的 3 为 011二进制格式的 5 为 101And 运算符比较这些二进制表示方式,一次比较一个二进制位置(位)。如果给定位置的两个位都为 1,则将 1 放在结果中的该位置。如果任何一个位是 0,则将 0 放在结果中的该位置。在前面的示例中,按如下所示计算结果:011(二进制格式的 3)101(二进制格式的 5)001(二进制格式的计算结果)计算结果以十进制形式处理。值 001 是 1 的二进制表示形式,因此 x = 1。除了在任何一个比较位是 1 或两个比较位都是 1 的情况下将 1 赋予结果位以外,按位 Or 运算与此类似。Xor 在比较的位正好只有一个是 1(而不是两者都是 1)时将 1 赋给结果位。Not 采用单个操作数并反转所有位(包括符号位),然后将该值赋予结果。这意味着,对于有符号正数,Not 始终返回负值,而对于负数,Not 始终返回正值或零。AndAlso 和OrElse 运算符不支持按位运算。 追问: 好复杂啊...还是不会,还有整数怎么转换为二进制数? 回答: 为什么一定要用位运算呢,你那个乘法只能通过左移操作符“ ”来进行,而左移一次代表乘以2,要是乘以一个小数,就必须先化成2的n次方,不够再用加减法调整,很麻烦啊,没必要用位运算啊。。。 追问: 因为我要进行大量的运算,但速度要快,所有用位运算...我也不想啊.. 回答: 那就不该用VB 啊,c/c++在执行效率上是没话说的。 追问: 问题就是不会嘛... 回答: 那你上csdn上发帖效果应该不错 追问: CSDN发了,我发在高性能运算,没人... 回答: 耐心一些,或者你应该发到VB.NET论坛那里。。。 追问: 额..只能这样了... 提问者 的感言: 太复杂了..算了 2010-11-08

创新互联公司自2013年创立以来,先为涪城等服务建站,涪城等地企业,进行企业商务咨询服务。为涪城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

vb点虐 2005中符号“

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

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 H00000007

Short, UShort 15 H0000000F

Integer, UInteger 31 H0000001F

Long, ULong 63 H0000003F

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

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

在VB中有移位运算符吗

'VB是没有移位命令的,但是可以自定义移位函数。

'位左移  

Public Function SHL(nSource As Long, n As Byte) As Long  

SHL = nSource * 2 ^ n  

End Function  

'位右移  

Public Function SHR(nSource As Long, n As Byte) As Long  

SHR = nSource / 2 ^ n  

End Function  

'获得指定的位  

Public Function GetBits(nSource As Long, n As Byte) As Boolean  

GetBits = nSource And 2 ^ n  

End Function  

'设置指定的位  

Public Function SetBits(nSource As Long, n As Byte) As Long  

SetBits = nSource Or 2 ^ n  

End Function  

'清除指定的位  

Public Function ResetBits(nSource As Long, n As Byte) As Long  

ResetBits = nSource And Not 2 ^ n  

End Function  

'注:以上的所有函数,没有考虑溢出的问题,请自行添加相关处理。


当前文章:vb点虐 位移运算符 vbs 位运算
转载注明:http://scyanting.com/article/ddsioes.html