Asp classic 经典ASP中的右移和左移运算符

Asp classic 经典ASP中的右移和左移运算符,asp-classic,operator-keyword,Asp Classic,Operator Keyword,如何在经典ASP中使用右移运算符。正如中所建议的,我使用“\”作为右移运算符。这给了我错误的结果 比如说 在javascript中,33555758>>24给出结果2。 但在经典ASP 33555758\24中给出除法结果 请帮助我。按位右移>不等于按给定数字简单除\,而是按给定次数除以整数2,即二进制10。位移位将一组位中的每个数字向右移动。也就是说,除以二进制10将从数字中删除一个二进制数字,并将数字右移 示例:5>>1=2 5 0000000000000000000000000

如何在经典ASP中使用右移运算符。正如中所建议的,我使用“\”作为右移运算符。这给了我错误的结果

比如说 在javascript中,33555758>>24给出结果2。 但在经典ASP 33555758\24中给出除法结果


请帮助我。

按位右移
>
不等于按给定数字简单除
\
,而是按给定次数除以整数2,即二进制10。位移位将一组位中的每个数字向右移动。也就是说,除以二进制10将从数字中删除一个二进制数字,并将数字右移

示例:5>>1=2

5       00000000000000000000000000000101 
5 >> 1  00000000000000000000000000000010 (2)
与5/2相同

i、 e.在您的情况下,它不是
33555758\24
,而是24次除以2。由于vbscript中没有直接方法,因此可以按以下步骤执行

Function SignedRightShift(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 "&HC0000000"
            NewValue = CLng(NewValue)
        Case vbInteger
            NewValue = Int((PrevValue And "&H7FFF") / 2)
            If PrevValue And "&H8000" Then NewValue = NewValue Or "&HC000"
            NewValue = CInt("&H"+ Hex(NewValue))
        Case vbByte
            NewValue = Int(PrevValue / 2)
            If PrevValue And "&H80" Then NewValue = NewValue Or "&HC0"
            NewValue = CByte(NewValue)
        Case Else: Err.Raise 13 ' Not a supported type
    End Select
    PrevValue = NewValue
Next
SignedRightShift = PrevValue

End Function
用作

x = SignedRightShift(33555758, 24)
有关更多信息,请参阅