2 Stimmen

In ASP, Bit Operator Linksverschiebung und Rechtsverschiebung

Kennt jemand Beispiele für Links- und Rechtshänder? Ich bin neu in ASP. Ich fand Bit-Operatoren wie AND,OR,NOT nur

2voto

xavier Punkte 21

Bei vbscript wird die Linksverschiebung durch Multiplikation erreicht (d.h. var * 2 links verschiebt eine Position, var * 4 links verschiebt zwei Positionen usw.) und die Rechtsverschiebung wird durch Division erreicht (d.h. var \ 16 rechts verschiebt vier Positionen).

0voto

user2316116 Punkte 6662

Es gibt keine direkten Methoden für die Links- und Rechtsverschiebung in vbscript, aber da es sich um eine einfache Verschiebung jeder Ziffer in einem Satz von Bits nach links oder rechts handelt, was durch die Division durch die Binärzahl 10 (Ganzzahl 2) erreicht werden kann, gibt es hier Hilfsmethoden, die dies tun

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

Weitere Informationen finden Sie unter http://chris.wastedhalo.com/2014/05/more-binarybitwise-functions-for-vbscript/

-1voto

Grant Crofton Punkte 8022

http://www.blackwasp.co.uk/CSharpShiftOperators.aspx

Das ist C#, aber die gleichen Operatoren funktionieren auch in neueren Versionen von VB.Net.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X