Двоичное вычитание VB.NET - PullRequest
       15

Двоичное вычитание VB.NET

0 голосов
/ 27 сентября 2018

Я хотел бы попросить некоторую помощь о двоичном вычитании в Visual Basic 2010. Мой код работает хорошо, благодаря @ video.baba

Dim BinaryResult As Integer = Convert.ToInt32(TextBox1.Text, 2) + Convert.ToInt32(TextBox2.Text, 2)
Textbox3.Text = BinaryResult.ToString

в конечном итоге проблема заключается в следующем.Если 1-й вход ниже, чем 2-й, что дает мне отрицательный результат, но ответ слишком далек

Пример:

0000 - 1111 = 11111111111111111111111111111001 

ДОЛЖЕН БЫТЬ

0000 - 1111 = -01111

Любая помощь будет оценена.Спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы действительно хотите, чтобы выходные данные были -01111 (или -1111, так как ведущий ноль опущен), вы должны сделать число положительным, а затем добавить двоичную строку со знаком минус.

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

Преобразование в двоичный код:

Dim BinaryResult As Integer = Convert.ToInt32(TextBox1.Text, 2) - Convert.ToInt32(TextBox2.Text, 2)

If BinaryResult < 0 Then
    TextBox3.Text = "-" & Convert.ToString(-BinaryResult, 2)
Else
    TextBox3.Text = Convert.ToString(BinaryResult, 2)
End If

Преобразование из двоичного кода:

Dim BinaryResult As Integer

If TextBox3.Text.StartsWith("-") Then
    BinaryResult = -Convert.ToInt32(TextBox3.Text.TrimStart("-"c), 2)
Else
    BinaryResult = Convert.ToInt32(TextBox3.Text, 2)
End If

Многоразовая версия:

Private Function BinarySubtract(ByVal a As String, ByVal b As String) As String
    Dim BinaryResult As Integer = Convert.ToInt32(a, 2) - Convert.ToInt32(b, 2)
    If BinaryResult < 0 Then
        Return "-" & Convert.ToString(-BinaryResult, 2)
    Else
        Return Convert.ToString(BinaryResult, 2)
    End If
End Function

Private Function FromBinary(ByVal s As String) As Integer
    If s.StartsWith("-") Then
        Return -Convert.ToInt32(s.TrimStart("-"c), 2)
    Else
        Return Convert.ToInt32(s, 2)
    End If
End Function

Онлайн-тест: https://dotnetfiddle.net/PoQZA6

...