P
prg1990
Программа переводит положительные и отрицательные десятичные числа в двоичный код.Проблема заключается в том что программа выполняет перевод коротких чисел но не выполняет перевод 32 разрядных длинных чисел например 2456765654.Ошибка overflow.Нужно чтобы она переводила любой числовой тип данных .Исходник приведен в архиве.Если у кого-то есть идеи как оптимизировать код то поделитесь ими пожалуйста.Заранее благодарю.
Код:
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