Перевод из двоичной в десятичную и обратно - VB

Узнай цену своей работы

Формулировка задачи:

Ребят, он переводит из десятичной в двоичную систему и обратно...но при переводе отрицательного десятичного числа, он переводит в двоичный вид, а обратно должен переводить дважды, как положительное и отрицательное..помогите..

Решение задачи: «Перевод из двоичной в десятичную и обратно»

textual
Листинг программы
Private Sub Command1_Click()
Dim dec
dec = Val(Text1.Text)
Text2.Text = Trim(d_b(Abs(dec), 2, Sgn(dec)))
End Sub
Private Sub Command2_Click()
Text1.Text = b_d(Trim(Text2.Text))
End Sub
 
Function d_b$(ByVal x, o%, zn)
On Error GoTo er
 
Do While x > 0
    d_b = CStr(x Mod o) + d_b
    x = x \ o
Loop
 
d_b = dop(d_b, zn)
 
Exit Function
 
er: MsgBox Err.Description: Err.Clear
End Function
 
Function dop$(x$, zn)
Dim dt$
dt = "": dop = ""
 
For i = 1 To 32
    dt = IIf(i > Len(x), 0, Mid(StrReverse(x), i, 1)) & dt
Next i
 
If zn = -1 Then dt = x1(rev(Trim(dt)), 1)
 
For i = 1 To 32
   dop = dop & Mid(dt, i, 1): If i Mod 4 = 0 Then dop = dop & " "
Next i
 
End Function
 
Function b_d(ByVal x$)
Dim i%, zn$
On Error GoTo er
 
Do While InStr(1, x, " ") > 0
   x = Replace(x, " ", "")
Loop
 
zn = ""
If Mid(x, 1, 1) = 1 Then
   zn = "-"
   x = rev(x1(x, 0))
End If
 
b_d = 0
For i = 1 To Len(x)
     b_d = b_d + Val(Mid(x, 32 - i + 1, 1)) * 2 ^ (i - 1)
Next i
b_d = zn & b_d
 
Exit Function
er: MsgBox Err.Description: Err.Clear
End Function
Function rev$(x$)
Dim i%
For i = 1 To 32
   Mid(x, i, 1) = CStr(1 - Val(Mid(x, i, 1)))
Next i
rev = x
End Function
Function x1$(x$, u%)
Dim i%
i = 0
   Do While Mid(x, 32 - i, 1) = u
      Mid(x, 32 - i, 1) = 1 - u:
      i = i + 1
   Loop
   Mid(x, 32 - i, 1) = u:
x1 = x
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы