有人知道左移和右移运算符样本吗?我是 ASP 新手。我发现了位运算符,例如 AND,OR,NOT only..
问问题
1807 次
3 回答
2
对于vbscript,左移是通过乘法完成的(即var * 2左移一位,var * 4左移两位等),右移是通过除法完成的(即var \ 16右移四个位置)。
于 2011-03-12T00:04:45.013 回答
0
vbscript 中没有左右移位的直接方法,但由于这是一组位中的每个数字向左或向右的简单移动,可以通过除以二进制 10(整数 2)来完成,这里是辅助方法这样做
Function LeftShift(pValue, pShift)
Dim NewValue, PrevValue, i
PrevValue = pValue
For i = 1 to pShift
Select Case VarType(pValue)
Case vbLong
NewValue = (PrevValue And "&H3FFFFFFF") * 2
If PrevValue And "&H40000000" Then NewValue = NewValue Or "&H80000000"
NewValue = CLng(NewValue)
Case vbInteger
NewValue = (PrevValue And "&H3FFF") * 2
If PrevValue And "&H4000" Then NewValue = NewValue Or "&H8000"
NewValue = CInt("&H"+ Hex(NewValue))
Case vbByte
NewValue = CByte((PrevValue And "&H7F") * 2)
Case Else: Err.Raise 13 ' Not a supported type
End Select
PrevValue = NewValue
Next
LeftShift = NewVAlue
End Function
Function RightShift(pValue, pShift)
Dim NewValue, PrevValue, i
PrevValue = pValue
For i = 1 to pShift
Select Case VarType(pValue)
Case vbLong
NewValue = Int((PrevValue And "&H7FFFFFFF") / 2)
If PrevValue And "&H80000000" Then NewValue = NewValue Or "&H40000000"
NewValue = CLng(NewValue)
Case vbInteger
NewValue = Int((PrevValue And "&H7FFF") / 2)
If PrevValue And "&H8000" Then NewValue = NewValue Or "&H4000"
NewValue = CInt(NewValue)
Case vbByte
NewValue = CByte(PrevValue / 2)
Case Else: Err.Raise 13 ' Not a supported type
End Select
PrevValue = NewValue
Next
RightShift = PrevValue
End Function
有关更多信息,请参阅http://chris.wastedhalo.com/2014/05/more-binarybitwise-functions-for-vbscript/
于 2020-04-21T13:24:28.950 回答
-1
http://www.blackwasp.co.uk/CSharpShiftOperators.aspx
那是 C#,但相同的运算符在最新版本的 VB.Net 中工作。
于 2010-08-12T09:57:30.497 回答