求解VB负数移位怎么移,本人初学,用到VB的移位,不知道负数怎么以为,求指导,最好有源代码! 急急急……

解决方案 »

  1.   

    你的移位是如何定义的?
    左移?右移?
    给个BAS,不知是否满足你的需求:
    Option Explicit
    Private Const BinTbl = "0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;"
    Private Const HexTbl = "0123456789ABCDEF"Function MoveRight$(ByVal BaseNum&, MoveNum&) '右移
        Dim BaseStr$, Result$
        BaseStr = Oct2Bin(BaseNum)
        Debug.Print BaseStr
        MoveRight = Left(String(MoveNum, "0") & BaseStr, Len(BaseStr))
        MoveRight = Bin2Oct(MoveRight)
    End FunctionFunction MoveLeft$(ByVal BaseNum&, MoveNum&) '左移
        Dim BaseStr$, Result$
        BaseStr = Oct2Bin(BaseNum)
        MoveLeft = Right(BaseStr & String(MoveNum, "0"), Len(BaseStr))
        MoveLeft = Bin2Oct(MoveLeft)
    End FunctionFunction Oct2Bin$(ByVal Value&)
        Dim i&, HexValue$
        Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"
        HexValue = CStr(Hex$(Value))
        For i = 1 To Len(HexValue)
            Oct2Bin = Oct2Bin + Mid(BinTbl, Val("&H" + Mid(HexValue, i, 1)) * 4 + 1, 4)
        Next i
    End FunctionFunction Bin2Oct$(ByVal BinValue$)
        Dim s      As String * 4
        Dim i&
        If Len(BinValue) Mod 4 <> 0 Then
            BinValue = String(4 - Len(BinValue) Mod 4, "0") + BinValue
        End If
        For i = 1 To Len(BinValue) Step 4
            s = Mid(BinValue, i, 4) & ";"
            Bin2Oct = Bin2Oct + Mid(HexTbl, (InStr(BinTbl, s) - 1) / 5 + 1, 1)
        Next
        Bin2Oct = Val("&H" & Bin2Oct)
    End Function
    '示例
    Private Sub Command1_Click()
        Debug.Print MoveRight(-123456, 2) '右移2位
    End Sub
      

  2.   

    http://www.excely.com/excel-vba/bit-shifting-function.shtml
    类似C++中的 << 和 >>
      

  3.   

    本帖最后由 bcrun 于 2012-04-30 10:24:18 编辑