ASP数据库连接方式大全(21)


Private Const BITS_TO_A_WORD = 32 

Private m_lOnBits(30)
Private m_l2Power(30)

Private Function LShift(lvalue, iShiftBits)
If iShiftBits = 0 Then
LShift = lvalue
Exit Function
ElseIf iShiftBits = 31 Then
If lvalue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 or iShiftBits > 31 Then
Err.Raise 6
End If

If (lvalue And m_l2Power(31 - iShiftBits)) Then
LShift = ((lvalue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) or &H80000000
Else
LShift = ((lvalue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
End If
End Function

Private Function RShift(lvalue, iShiftBits)
If iShiftBits = 0 Then
RShift = lvalue
Exit Function
ElseIf iShiftBits = 31 Then
If lvalue And &H80000000 Then
RShift = 1
Else
RShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 or iShiftBits > 31 Then
Err.Raise 6
End If

RShift = (lvalue And &H7FFFFFFE) \ m_l2Power(iShiftBits)

If (lvalue And &H80000000) Then
RShift = (RShift or (&H40000000 \ m_l2Power(iShiftBits - 1)))
End If
End Function

Private Function RotateLeft(lvalue, iShiftBits)
RotateLeft = LShift(lvalue, iShiftBits) or RShift(lvalue, (32 - iShiftBits))
End Function

Private Function AddUnsigned(lX, lY)
Dim lX4
Dim lY4
Dim lX8
Dim lY8
Dim lResult

lX8 = lX And &H80000000
lY8 = lY And &H80000000
lX4 = lX And &H40000000
lY4 = lY And &H40000000

lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)

If lX4 And lY4 Then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
ElseIf lX4 or lY4 Then
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
Else
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
End If
Else
lResult = lResult Xor lX8 Xor lY8
End If

AddUnsigned = lResult

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3004.html