Перевод из двоичной в десятичную систему.

Тема в разделе "Visual Basic", создана пользователем prg1990, 10 мар 2010.

  1. prg1990

    prg1990 Гость

    Программа переводит положительные и отрицательные десятичные числа в двоичный код.Проблема заключается в том что программа выполняет перевод коротких чисел но не выполняет перевод 32 разрядных длинных чисел например 2456765654.Ошибка overflow.Нужно чтобы она переводила любой числовой тип данных .Исходник приведен в архиве.Если у кого-то есть идеи как оптимизировать код то поделитесь ими пожалуйста.Заранее благодарю.

    Код (Text):
    Dim a
    Dim c
    Dim b As String
    Dim s As String
    Dim w As String
    Dim g
    Dim z As String
    Dim p As String
    Dim q
    Private Sub Command1_Click()
    Text2.Text = ""
    w = 0
    z = ""
    q = 0
    v = 0
    n = 0
    b = ""
    i = 0

    a = Text1.Text
    If Val(a) >= 0 Then
    Do While a > 0
    q = a Mod 2
    v = Str(q)
    n = LTrim(v)
    b = b + n
    a = a \ 2
    i = i + 1
    Loop
    i = 1
    If Len(B) < 32 Then Do While i <= 32 - Len(B): b = b + "0": Loop
    w = StrReverse(B)
    Text2.Text = w
    End If
    If Val(a) < 0 Then
    a = a * (-1)
    Do While a <> 0
    If (Abs(a) Mod 2 = 1) Then
    s = "1" + s
    Else: s = "0" + s
    End If
    a = Abs(a) \ 2
    Loop
    If Len(s) < 32 Then
    For i = Len(s) To 31
    s = "0" + s
    Next
    End If
    s1 = ""
    For i = 32 To 1 Step -1
    If Mid(s, i, 1) = "0" Then
    s1 = "1" + s1
    Else: s1 = "0" + s1
    End If
    Next
    s = s1
    If Mid(s, 32, 1) = "0" Then
    s = Mid(s, 1, 31) + "1"
    Else: s = Mid(s, 1, 31) + "0"
    End If
    Text2.Text = s
    End If
    c = 0
    End Sub
     

    Вложения:

    • 111.rar
      Размер файла:
      1,7 КБ
      Просмотров:
      9
  2. werti

    werti Гость

    Попробуй этот код. Вроде рабочий :D
    Как то находил на каком-то сайте ^_^
    Код (Text):
    Dim a As Integer
    Dim i As Long
    For i = 1 To Len(ch)
    a = a + CLng(Mid$(ch, i, 1)) * 2 ^ (Len(ch) - i)
    Next
    Отрицательные числа не поддерживает думаю сможешь дописать
    ch - число в двоичной системе
    a - полученное число в десятичной системе (String)
     
Загрузка...

Поделиться этой страницей