在VB6中,实现以下代码。1、将购物数量(双字节整数),循环右移N次(N界于0-15之间)代码 ,请注意是循环右移,非一般右移。

解决方案 »

  1.   


    Private Sub Command1_Click()
       Dim a As Integer, n As Integer
       Dim b As Integer, c As Integer
       Dim i As Integer
       a = 3: n = 15
       For i = 1 To n
         b = a \ 2
         c = (a Mod 2) * (2 ^ 14)
         a = c + b
         Debug.Print a
       Next
       
    End Sub
      

  2.   

    手上没现成的代码。网上倒是一大堆SHL SHR的现成的函数
      

  3.   

    function ROR(long v,integer n) as long
    dim v1 as long
    dim v2 as long
        do
            if n<0 then n=n+16 else exit do
        loop
        n=n mod 16
        select n
        case 0
            ROR=v
        case 1
            v1=(v and &H1&) * &H8000&
            v2=v \ &H2&
            ROR=v1 or v2
        case 2
            v1=(v and &H3&) * &H4000&
            v2=v \ &H4&
            ROR=v1 or v2
        case 3
            v1=(v and &H7&) * &H2000&
            v2=v \ &H8&
            ROR=v1 or v2
        case 4
            v1=(v and &HF&) * &H1000&
            v2=v \ &H10&
            ROR=v1 or v2
        case 5
            v1=(v and &H1F&) * &H800&
            v2=v \ &H20&
            ROR=v1 or v2
        case 6
            v1=(v and &H3F&) * &H400&
            v2=v \ &H40&
            ROR=v1 or v2
        case 7
            v1=(v and &H7F&) * &H200&
            v2=v \ &H80&
            ROR=v1 or v2
        case 8
            v1=(v and &HFF&) * &H100&
            v2=v \ &H100&
            ROR=v1 or v2
        case 9
            v1=(v and &H1FF&) * &H80&
            v2=v \ &H200&
            ROR=v1 or v2
        case 10
            v1=(v and &H3FF&) * &H40&
            v2=v \ &H400&
            ROR=v1 or v2
        case 11
            v1=(v and &H7FF&) * &H20&
            v2=v \ &H800&
            ROR=v1 or v2
        case 12
            v1=(v and &HFFF&) * &H10&
            v2=v \ &H1000&
            ROR=v1 or v2
        case 13
            v1=(v and &H1FFF&) * &H8&
            v2=v \ &H2000&
            ROR=v1 or v2
        case 14
            v1=(v and &H3FFF&) * &H4&
            v2=v \ &H4000&
            ROR=v1 or v2
        case 15
            v1=(v and &H7FFF&) * &H2&
            v2=v \ &H8000&
            ROR=v1 or v2
        end select
    end function
      

  4.   

    问下楼上两位,是and or 效率快,还是* /效率快啊?