نمایش نتایج 1 تا 2 از 2

نام تاپیک: شیفت به راست

  1. #1

    شیفت به راست

    سلام به همگی
    میخوام معادل این دستور را تو vb6 بدونم
    میخوام عدد 843853110 و 8 بیت شیفت بدم به راست
    ( 8<< 843853110 ) در دات نت
    خروجیم میشه3296301
    دستور شیفت به راست چجوریه تو vb6

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: شیفت به راست

    بفرما تو vb 6 اینه

    فقط کد باید در ماژول کپی شود.
    Declarations:

    Private OnBits(0 To 31) As Long

    Public Function LShiftLong(ByVal Value As Long, _
    ByVal Shift As Integer) As Long

    MakeOnBits

    If (Value And (2 ^ (31 - Shift))) Then GoTo OverFlow

    LShiftLong = ((Value And OnBits(31 - Shift)) * (2 ^ Shift))

    Exit Function

    OverFlow:

    LShiftLong = ((Value And OnBits(31 - (Shift + 1))) * _
    (2 ^ (Shift))) Or &H80000000

    End Function

    Public Function RShiftLong(ByVal Value As Long, _
    ByVal Shift As Integer) As Long
    Dim hi As Long
    MakeOnBits
    If (Value And &H80000000) Then hi = &H40000000

    RShiftLong = (Value And &H7FFFFFFE) \ (2 ^ Shift)
    RShiftLong = (RShiftLong Or (hi \ (2 ^ (Shift - 1))))
    End Function



    Private Sub MakeOnBits()
    Dim j As Integer, _
    v As Long

    For j = 0 To 30

    v = v + (2 ^ j)
    OnBits(j) = v

    Next j

    OnBits(j) = v + &H80000000

    End Sub


    به شکل دیگر و حالتی دیگر
    Function rightShift(value,bits)
    Dim res

    res = 65535 AND value

    If value>=0 Then
    res = res \ (2^bits)
    Else If value=-1 Then
    res = rightShift(res + 32768, bits - 1)
    Else
    res = rightShift(value \ 2 + 32768, bits - 1)
    End If
    End If

    rightShift = res AND 65535
    End Function

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: یک شنبه 06 فروردین 1396, 09:01 صبح
  2. پاسخ: 7
    آخرین پست: سه شنبه 28 آذر 1391, 13:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •